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