【问题标题】:Retrieve custom order item meta data values in Woocommerce 3在 Woocommerce 3 中检索自定义订单项元数据值
【发布时间】:2018-07-20 05:33:49
【问题描述】:

我有以下代码根据一些自定义字段创建购物车商品数据:

function parcel_add_shipment_text_to_cart_item( $cart_item_data, $product_id, $variation_id ) { 

$service = filter_input( INPUT_POST, 'servicelevel' );
$servicecode = filter_input( INPUT_POST, 'servicecode'); 
$price = filter_input( INPUT_POST, 'sellprice' );
$chargeweight = filter_input( INPUT_POST, 'chargeweight' );  

$cart_item_data['servicelevel'] = $service;
$cart_item_data['servicecode'] = $servicecode;
$cart_item_data['serviceprice'] = $price;
$cart_item_data['chargeweight'] = $chargeweight;

return $cart_item_data; }


add_filter( 'woocommerce_add_cart_item_data', 'parcel_add_shipment_text_to_cart_item', 10, 3 );

然后我在这里添加购物车元数据:

function add_custom_field_text_to_order_items( $item, $cart_item_key, $values, $order ) {


$item->add_meta_data( __( 'Service Level', 'Shipment' ), $values['servicelevel'] );
$item->add_meta_data( __( 'Your Reference', 'Shipment' ), $values['shipmentref'] );
$item->add_meta_data( __( 'Sell Price', 'Shipment' ), $values['serviceprice'] );
$item->add_meta_data( __( 'Charge Weight', 'Shipment' ), , $values['chargeweight'] );  } 

add_action( 'woocommerce_checkout_create_order_line_item', 'add_custom_field_text_to_order_items', 10, 4 );  

如何检索要在 woocommerce_payment_complete 或订单完成屏幕中使用的上述商品元数据?我知道上述数据有效,因为我可以在订单屏幕和电子邮件中看到它。非常感谢您的帮助。

【问题讨论】:

    标签: php wordpress woocommerce metadata orders


    【解决方案1】:

    在 woocommerce_payment_complete 操作钩子(或任何其他可以获取订单 ID 或订单对象的钩子)中使用您的自定义订单商品元数据:

    add_action( 'woocommerce_payment_complete', 'on_action_payment_complete', 10, 1 );
    function on_action_payment_complete( $order_id ) {
        // Get an instance of the WC_Order Object
        $order = wc_get_order( $order_id );
    
        // Loop through order items
        foreach( $order->get_items() as $item_id => $item ){
            $servicelevel = $item->get_meta('Service Level');
            $servicecode  = $item->get_meta('Your Reference');
            $serviceprice = $item->get_meta('Sell Price');
            $chargeweight = $item->get_meta('Charge Weight');
        }
    }
    

    代码进入您的活动子主题(或活动主题)的 function.php 文件中。它应该有效。钩子内的代码经过测试,确实有效。

    【讨论】:

    • 嗨 Loic,如果你不介意,我有一个问题。您知道 Woocommerce 在执行以下操作时如何以某种方式显示元数据。如何停止它按顺序显示它等但保持添加元数据? $item->add_meta_data( __( 'Service Level', 'Shipment' ), $values['servicelevel'] );
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    • 2021-06-01
    • 1970-01-01
    • 2018-08-07
    • 2018-07-11
    • 2018-07-12
    • 2021-07-13
    相关资源
    最近更新 更多