Проблема с woocommerce_add_order_item_meta - PullRequest
0 голосов
/ 10 декабря 2018

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

Этофактический код, предполагается сохранить значение пользовательских полей.Любая идея о том, как заставить его работать с устаревшим хуком?

add_action('woocommerce_add_order_item_meta','save_in_order_item_meta', 10, 3 );
function save_in_order_item_meta( $item_id, $values, $cart_item_key ) {
if( isset( $values['custom_data'] ) ) {
   woocommerce_new_order_item( $item_id, $values['custom_data']['label'], $values['custom_data']['value'] );
}
}

Любая помощь приветствуется.Спасибо

Редактировать;Уже попробовал.

 add_action( 'woocommerce_add_order_item_meta', 'custom_add_order_item_meta', 20, 3 ); function custom_add_order_item_meta( 
 $item_id, $values, $cart_item_key ) { // Get cart item custom data and update order item meta if( isset( $values['custom_data'] ) ) { 
 wc_add_order_item_meta( $item_id, $values['custom_data']['label'], $values['custom_data']['value'] ); } }

 add_action( 'woocommerce_add_order_item_meta', 'custom_add_order_item_meta', 20, 3 );
 function custom_add_order_item_meta( $item_id, $values, $cart_item_key ) {
 $custom_field_value = $custom_field_value;

 if ( ! empty( $custom_field_value ) ){
    wc_add_order_item_meta( $item_id, $values['custom_data']['label'], $values['custom_data']['value']  );
}

}

1 Ответ

0 голосов
/ 11 декабря 2018

Крюк woocommerce_add_order_item_meta заменяется на woocommerce_checkout_create_order_line_item, поэтому с вашим кодом (при условии, что объект корзины содержит данные о вашей пользовательской корзине) :

add_action('woocommerce_checkout_create_order_line_item', 'save_custom_order_item_meta_data', 10, 4 );
function save_custom_order_item_meta_data( $item, $cart_item_key, $values, $order ) {
    if( isset( $values['custom_data']['label'] ) && isset( $values['custom_data']['value'] ) ) {
       $item->update_meta_data( $values['custom_data']['label'], $values['custom_data']['value'] );
    }
}

Код входит вФайл function.php вашей активной дочерней темы (или активной темы).Это должно работать.

Похожие:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...