Woocommerce - wc_add_notice() 在购物车中没有任何内容时不会添加到会话

chr*_*con 4 php wordpress woocommerce

我有一个自定义表单,它在提交时调用 function.php 中的一个函数。它最终会检查输入的字段,并使用woocommerce wc_add_notice()标准的东西做一些事情或发回错误消息。

问题是,它似乎只是在某些时候将商品添加到购物车时才将通知添加到会话中。如果我在隐身选项卡中打开并尝试表单,我将不会收到任何消息。只是要清楚我wc_print_notices()在我的模板中使用。

我打印了 woocommerce 会话只是为了确认,是的,当购物车中没有添加任何东西时,它不在那里。我已经删除了该功能,因此无论是否填写任何内容,当您单击提交时它都会发送回错误消息,只是为了检查。这是有问题的功能:

add_action('wp_ajax_add_transfer', 'process_add_transfer');
add_action('wp_ajax_nopriv_add_transfer', 'process_add_transfer');
function process_add_transfer() {
     global $woocommerce;
     wc_add_notice( 'This is my custom error', 'error' );
     wp_redirect( get_permalink(125) ); //this is the same page form is on
}
Run Code Online (Sandbox Code Playgroud)

链接到这里的页面

我已经搜索并搜索过,但没有发现我做错了什么或为什么这不起作用,任何帮助表示赞赏。

干杯克里斯

chr*_*con 7

好的,所以我想通了!woocommerce 2.1 > 似乎在使用购物车之前不会设置 cookie,以帮助缓存或其他东西。这是一个线程:https : //github.com/woothemes/woocommerce/issues/4920

我的解决方案是将其添加到我的函数中:

do_action( 'woocommerce_set_cart_cookies',  true );
Run Code Online (Sandbox Code Playgroud)

希望这对其他人有帮助。