Пустой массив в первом аргументе для хука фильтра woocommerce_add_cart_item_data - PullRequest
1 голос
/ 07 мая 2020

Я получаю пустой массив из фильтра 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);

Есть идеи, почему это может быть? Я нигде не нашел упоминания об этой проблеме. Я пробовал оба поведения корзины ie Перенаправить на страницу корзины после успешного добавления и / или Включить 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';
    }

Вы можете увидеть 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,50 фунта стерлингов. Эта стоимость этой опции и любых других выбранных должна быть выше цены указанного c товара, добавляемого в корзину. Его не следует представлять отдельно. Определение добавленной опции должно быть go в поле продукта везде, где отображается купленный товар. Я прорабатываю шаг за шагом, но сейчас это непросто! Я предполагаю, что дальше я смогу обновить элемент в этом порядке?

1 Ответ

1 голос
/ 07 мая 2020

Хук woocommerce_add_cart_item_data используется для добавления пользовательских данных к элементу корзины при простой отправке добавления в корзину, как дополнительные поля , включенные в <form>, где «добавить в Кнопка корзины расположена…

Итак, , если вы не отправляете дополнительные пользовательские данные из настраиваемых полей при добавлении в корзину события (со страниц одного продукта), первый аргумент функции будет пустым массивом

См. те связанные потоки ответов , использующие этот хук.

...