Преобразовать индексированный массив в читаемые метаданные элемента заказа в WooCommerce - PullRequest
1 голос
/ 02 мая 2019

У меня проблемы с добавлением метаданных элемента пользовательского заказа.Я нашел один способ сделать это, но это выглядит ужасно.enter image description here

Код:

add_action('woocommerce_add_order_item_meta',  'func_add_custom_data_to_order_item_meta',1,2);
function func_add_custom_data_to_order_item_meta( $item_id, $values ) {
    global $woocommerce,$wpdb;

    if(!empty($values['custom'])){
        $custom_order_meta = $values['custom'];
        wc_add_order_item_meta($item_id, 'custom', serialize($custom_order_meta));
    }
}

Есть ли способ перебирать пары ключ-значение и каждый раз получать их содержимое на новой строке?

1 Ответ

1 голос
/ 02 мая 2019

Обновлено

Начиная с WooCommerce 3, хук woocommerce_add_order_item_meta устарел и заменен… см. Woocommerce: какой хук заменить устаревшим "woocommerce_add_order_item_meta" .

Чтобы получить отдельные читаемые данные элемента пользовательского заказа (вместо сериализованного массива) Попробуйте это:

add_action('woocommerce_checkout_create_order_line_item', 'add_custom_cart_item_data_as_order_item_meta', 10, 4 );
function add_custom_cart_item_data_as_order_item_meta( $item, $cart_item_key, $values, $order ) {
    if( isset($values['custom']['length']) ){
         $item->update_meta_data( 'Length', $values['custom']['length'] );
    } 
    // elseif … ad so on
}

Код помещается в файл function.php вашей активной дочерней темы (active theme).

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