我使用Woocommerce Composite Products插件提供的过滤器来更新集合中的产品数量。当我登录时,此过滤器按预期工作,但是当我未登录时,数量不会更新。
我使用以下代码:
add_filter( 'woocommerce_composited_product_quantity', 'update_quantity', 10, 6);
function update_quantity($qty_value, $min_quantity, $max_quantity, $product, $component_id, $composite_product)
{
$category = $_POST['soort'];
$retrieve_data = WC()->session->get( 'quantities' );
$postname = $product->post->post_name;
if($postname == 'product-basis') {
return 1;
}
else if (strpos($postname, 'product-')) {
return 1;
} else {
$value = is_numeric($retrieve_data[$category][$postname]) && $retrieve_data[$category][$postname] > 0 ? $retrieve_data[$category][$postname] : 1;
return (int)$value;
}
}
$ soort_verwarming和$ retrieve_data的值可用,这让我觉得当用户没有登录时,过滤器在某种程度上不起作用。
$ retrieve_data [$ category] [$ postname]对应于应为每个产品返回的数字并更新其数量。
有没有理由说add_filter对于未登录的用户不起作用?
答案 0 :(得分:0)
将此添加到我的标题中为我解决了问题:
WC()->session->set_customer_session_cookie(true);
我在其他地方使用Wordpress会话来保存我需要更新数量的一些数据。 我的猜测是这个会话没有为已注销的客户设置,这解释了为什么它在我登录时工作。
如果需要,还有其他信息: https://docs.woothemes.com/wc-apidocs/source-class-WC_Session_Handler.html#73-91