Wordpress WooCommerce注册短代码-错误消息问题

Wordpress WooCommerce注册短代码-错误消息问题,wordpress,woocommerce,Wordpress,Woocommerce,我目前正在创建一个小部件,在使用WooCommerce的WordPress网站上显示注册表格。现在,我只有3个基本字段,分别是电子邮件、密码、重复密码。我期待着添加更多的WooCommerce领域,但希望在跳到下一步之前解决这个问题 我的消息输出有一些问题(密码错误,帐户已经存在,等等) 我在网上搜索,除了他们的注册页面外,还没有为WooCommerce注册建立的快捷码。所以我继续创建了一个带有模板部分的短代码 function custom_register_shortcode( $atts,

我目前正在创建一个小部件,在使用WooCommerce的WordPress网站上显示注册表格。现在,我只有3个基本字段,分别是电子邮件、密码、重复密码。我期待着添加更多的WooCommerce领域,但希望在跳到下一步之前解决这个问题

我的消息输出有一些问题(密码错误,帐户已经存在,等等)

我在网上搜索,除了他们的注册页面外,还没有为WooCommerce注册建立的快捷码。所以我继续创建了一个带有模板部分的短代码

function custom_register_shortcode( $atts, $content ){
    global $woocommerce;
    $form = load_template_part('framework/views/register-form');
    return $form;
}
add_shortcode( 'register', 'custom_register_shortcode' );
这是我用来获取变量中模板部分的代码片段,因为默认函数将“回显”内容,而不是“返回”内容

所以,问题是,当我调用
woocommerce\u show\u messages
$woocommerce->show\u messages()从我的模板部分,没有显示任何内容,或者如果显示,则显示在页面顶部

我尝试将调用放入我的快捷码函数中:

function custom_register_shortcode( $atts, $content ){
    global $woocommerce;
    $woocommerce->show_messages(); 
    $form = load_template_part('framework/views/register-form');
    return $form;
}
add_shortcode( 'register', 'custom_register_shortcode' );
这样做,消息输出就在
标记内,这不是我想要的

我试着用
ob\u start()
ob\u get\u contents()
ob\u clean()
做同样的把戏,但什么也看不出来。变量将为空

我还尝试将
woocommerce\u show\u消息
与核心中的动作挂钩:

add_action('woocommerce_-before_-shop_-loop','woocommerce_-show_-messages',10)

例如:

add_action('before_registration_form'、'woocommerce_show_messages')

我在模板部分添加了以下内容:

但我仍然无法获得框内显示的错误消息。它将始终插入

当一切完成后,我将分享最终的解决方案

谢谢你抽出时间


Julien

通过将自定义函数与在我的
header.php中调用的操作挂钩,我终于实现了这一点

我猜模板部件中的挂钩函数并没有按预期工作

在header.php中,我得到了以下信息:

do_action(标题后的主题)

这是钩子函数。工作完美

function theme_show_messages(){
  woocommerce_show_messages();
}

add_action('theme_after_header', 'theme_show_messages');

不过,我将研究“取消挂钩”原始的show message函数,因为它可能会显示两次。需要再测试一些;)

您也可以在模板中使用[woocommerce_messages]快捷码,以显示您想要显示的内容

回答一些老问题,但您也可以尝试以下操作:

$message = apply_filters( 'woocommerce_my_account_message', '' );

if ( ! empty( $message ) ) {
    wc_add_notice( $message );
}
$message = apply_filters( 'woocommerce_my_account_message', '' );

if ( ! empty( $message ) ) {
    wc_add_notice( $message );
}