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