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


Woocommerce - wc_add_notice() not adding to session when nothing in the cart

我有一个自定义表单,可以在提交时调用函数.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
}

链接到此处的页面

我已经搜索了又搜索,没有遇到我做错了什么或为什么这不起作用,任何帮助表示赞赏。

干杯克里斯

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

我的

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

do_action( 'woocommerce_set_cart_cookies',  true );

希望这对其他人有所帮助。

您只是在此处添加错误通知。它将在会话中保存这些错误。现在要显示这些错误通知,您必须在您正在工作的页面上或发送 ajax 请求时使用以下函数:

wc_print_notices();