2013-10-27 5 views
2

Я пытаюсь добавить настраиваемое поле для каждого элемента, который я вручную добавляю в корзину. Пользовательское поле - это идентификатор печати, который передается обратно из стороннего API.Добавить поле в корзину товара

Это необходимо прикреплять к каждому товару в тележке, чтобы они могли использоваться после оплаты заказа.

Я пытаюсь настроить настраиваемое поле для каждой позиции корзины, используя $ cart_item_data при добавлении вручную в корзину. Я не уверен, если это то, что мне нужно сделать, но бог любит Трир :)

$woocommerce->cart->add_to_cart($product_id, 1, '', '', array(printJobId => 12345)); 

Когда я осматриваю заказ в WooCommerce я не могу видеть printJobId в любом месте.

Кто-нибудь знает, где я иду не так?

Благодаря

+0

как вы пытаетесь просмотреть printJobId поле? Он не будет отображаться в любом месте по умолчанию, вам нужно будет отображать его вручную где-то – danyo

+0

- это поле printJobId, заданное в базе данных при заказе товара? – Dez

ответ

2

Вам нужно два других крючка:

add_action('woocommerce_get_cart_item_from_session', 'cart_item_from_session' , 99, 2); 

function cart_item_from_session($data, $values) { 
    $data[ 'printJobId' ] = isset($values[ 'printJobId' ]) ? $values[ 'printJobId' ] : ''; 
    return $data; 
} 

add_filter('woocommerce_add_order_item_meta', 'add_item_meta_order', 10, 3); 

function add_item_meta_order($item_id, $values) { 
    if (!is_null($values[ 'printJobId' ])) { 
     wc_add_order_item_meta($item_id, 'printJobId', $values[ 'printJobId' ]); 
    } 
} 

Тогда вы увидите, мета-данные на BackOffice, а также на странице заказа детальной

+0

Ты спас мой день! Благодаря! :) –

Смежные вопросы