首页 > 解决方案 > woocommerce_add_cart_item_data 过滤器挂钩的第一个参数上的空数组

问题描述

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 Gateway。

更新 - 将产品选项添加到产品屏幕的代码

    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';
    }

您可以看到add_product_option.php中的 html将被添加到产品中,如果产品有一个带有 slug “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.50 英镑。此选项和任何其他选择的成本需要提高添加到购物车的特定项目的价格。它不应单独表示。添加的选项的定义应在显示购买项目的任何地方进入产品字段。我正在一步一步地工作,但在我现在这并不容易!我猜下一个是我将能够按此顺序更新项目吗?

标签: phpwordpresswoocommercecarthook-woocommerce

解决方案


woocommerce_add_cart_item_data钩子用于在简单的添加到购物车提交时将自定义数据添加到购物车项目,例如“添加到购物车”按钮所在的位置中包含的其他字段......<form>

因此,如果您没有在添加到购物车事件(从单个产品页面)上的自定义字段中提交额外的自定义数据,第一个函数参数将是一个空数组......

使用这个钩子查看那些相关的答案线程。


推荐阅读