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

时间:2016-02-24 17:55:44

标签: 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
}

link to page here

我已经搜索过并且没有看到我正在做错的事情,或者为什么这样做不起作用,任何帮助表示赞赏。

欢呼克里斯

3 个答案:

答案 0 :(得分:2)

您只是在这里添加错误通知。它会在会话中保存这些错误。现在,为了显示这些错误通知,您必须在您正在使用的页面上使用以下功能或发送ajax请求:

wc_print_notices();

答案 1 :(得分:2)

好的,我明白了!看来woocommerce 2.1>在使用购物车之前不会设置cookie,以帮助缓存或其他东西。这是一个帖子:https://github.com/woothemes/woocommerce/issues/4920

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

do_action( 'woocommerce_set_cart_cookies',  true );

希望这有助于其他人。

答案 2 :(得分:0)

这对我没用;当购物车为空并且尝试通过wc_add_notice显示通知消息时出现问题; (WooCommerce v3.0 +)

如果购物车中有任何物品,则通知显示正确;如果购物车是空的,则不会。

更新:我已经设法使用woocommerce_add_to_cart_fragments上的add_filter来解决这个问题,以更新“购物车是空的”#39;消息并附上我试图显示的通知。

仍然赞赏此问题的任何其他解决方案:)谢谢