在 WooCommerce 中将索引数组转换为可读的订单项元数据

Convert an indexed array to readable order item meta data in WooCommerce

我在添加自定义订单项元数据时遇到问题。我找到了一种方法,但它看起来很糟糕。

代码:

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));
    }
}

有什么方法可以遍历键值对并每次都换行获取它们的内容吗?

已更新

从 WooCommerce 3 开始,挂钩 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 文件。