我从 woocommerce_add_cart_item_data
当产品被添加到购物车时,过滤。例子添加到 functions.php
的WordPress主题。
function TEST_post_filter($a,$b,$c) {
print_r($a); //THIS IS EMPTY ARRAY ie returns Array()
return $a;
}
add_filter('woocommerce_add_cart_item_data', 'Test_post_filter',10,3);
任何想法,为什么会这样?我在任何地方都没有找到这个问题的参考。我已经尝试了两个篮子的行为,即 添加成功后重定向到购物篮页面 和或 启用AJAX添加到购物篮按钮的档案. 我不能让我的头。我已经激活的插件是WooCommerce,和WooCommerce Stripe网关。
更新 - 在产品屏幕上添加产品选项的代码。
function option_add_to_product() {
global $product;
//get pizza categories
$categories = get_terms( 'product_cat', array(
'hide_empty' => false,
));
$use_product = [];
for($i=0;$i<count($categories);$i++) {
if(strtolower($categories[$i]->slug) === 'bespoke_product')
array_push($use_product,$categories[$i]->term_id);
}
$include_product = false;
if(! count($use_product))
return false;
for($i=0;$i<count($use_product);$i++) {
$this_product_categories = $product->get_category_ids();
for($ii=0;$ii<count($this_product_categories);$ii++) {
if($this_product_categories[$ii] === $use_prouduct[$i]) {
$include_product = true;
break;
}
}
}
if(! $include_product)
return false;
//template to add product option
require plugin_dir_path(__FILE__) . 'templates/add_product_option.php';
}
你可以看到HTML从 add_product_option.php 将被添加到产品中,如果该产品有一个带有 "bespoke_product "的类别。注意,这种获取产品匹配的方法是暂时的(目前只是技术债)。
当过滤器 woocommerce_add_cart_item_data
被调用,从产品表格中发布的数据可以被相应的函数使用。未经消毒的数据可能如下。
[extra_option_one] => 0
[extra_option_two] => 0
[extra_options_three] => 1
[extra_option_four] => 0
[order_note] =>
每一个选项都会有一个相关价格的查询表,例如: extra_options_three
可能是1.5英镑。这个选项和任何其他选择的成本需要提高被添加到购物车的特定项目的价格。它不应该被单独表示。添加的选项的定义应该进入产品字段,到处显示该购买的项目。我在一步步的解决,但以我现在的情况来看,并不容易! 我猜测接下来是哈我要能按照这个顺序更新项目?
该 woocommerce_add_cart_item_data
钩子 用于向购物车项目添加自定义数据 在简单的添加到购物车提交。如附加字段 列入 <form>
在 "添加到购物车 "按钮的位置...
所以 如果您没有提交额外的自定义数据 在添加到购物车事件中,从自定义字段(从单个产品页面)。第一个函数参数将是一个空数组。…
请看 那些相关的答案线 使用这个钩子。