Добавление пользовательской переменной в содержимое корзины

20 мар. 2014 г., 11:23:14
Просмотры: 40.6K
Голосов: 3

Я добавил пользовательскую переменную на странице товара и могу передать значение этой переменной в функцию добавления в корзину.

public function add_to_cart( $product_id, $quantity = 1, $mmCentre, $variation_id = '', $variation = '', $cart_item_data = array()  ) {
.........
.........
}

Переменная $mmCentre является пользовательской переменной. Сейчас я сделал следующее:

$this->cart_contents[$cart_item_key] = apply_filters( 'woocommerce_add_cart_item', array_merge( $cart_item_data, array(
                    'product_id'    => $product_id,
                    'variation_id'  => $variation_id,
                    'variation'     => $variation,
                    'quantity'      => $quantity,
                    'data'          => $product_data,
                    'mmCentre'      => $mmCentre
                ) ), $cart_item_key );

Проблема в том, что я не могу получить это значение на странице корзины. Я сделал дамп cart_contents, но не вижу переданного значения в массиве.

Не могли бы вы подсказать, что я делаю неправильно?

2
Комментарии

$mmid — это новое поле формы внутри формы добавления в корзину?

passatgt passatgt
20 мар. 2014 г. 11:32:21

Да, $mmid — это новое поле формы. Я вижу, что значение передается в функцию add_to_cart, но не могу получить его на странице корзины.

Prithviraj Mitra Prithviraj Mitra
20 мар. 2014 г. 11:33:30
Все ответы на вопрос 1
2
16

Мне пришлось делать что-то подобное некоторое время назад, вот что сработало для меня:

В примере пользовательское поле ввода называется "test_field" внутри формы добавления в корзину, и таким образом при дампе cart_contents вы можете увидеть значение где-то в конце

// Сохраняем кастомное поле
add_filter( 'woocommerce_add_cart_item_data', 'add_cart_item_custom_data_vase', 10, 2 );
function add_cart_item_custom_data_vase( $cart_item_meta, $product_id ) {
  global $woocommerce;
  $cart_item_meta['test_field'] = $_POST['test_field'];
  return $cart_item_meta; 
}

// Получаем из сессии и добавляем в переменную корзины
function get_cart_items_from_session( $item, $values, $key ) {
    if ( array_key_exists( 'test_field', $values ) )
        $item[ 'mmCentre' ] = $values['test_field'];
    return $item;
}
add_filter( 'woocommerce_get_cart_item_from_session', 'get_cart_items_from_session', 1, 3 );
20 мар. 2014 г. 11:49:01
Комментарии

Большое спасибо за ваше предложение. Я попробую его сегодня вечером, так как у меня нет доступа к файлам. Я сообщу вам о результатах. Думаю, это сработает.

Prithviraj Mitra Prithviraj Mitra
20 мар. 2014 г. 12:23:47

Отлично. Теперь все работает. Большое спасибо за помощь, друг.

Prithviraj Mitra Prithviraj Mitra
21 мар. 2014 г. 00:36:04