WooCommerce 自定义订单 itemmeta 显示我的帐户查看订单页面

时间:2021-05-16 16:31:04

标签: wordpress woocommerce

我为电子商务管理订单项目元创建了一个自定义字段。一切都很好。

我想在“我的帐户”的“订单详细信息”页面上显示自定义字段 MetaValue。但没有显示任何内容。基于 Save Order item custom field in Woocommerce Admin order pages 答案代码,这是我的尝试

function add_order_item_custom_field( $item_id, $item ) {
woocommerce_wp_text_input( array(
    'id'            => 'v_number'.$item_id,
    'label'         => __( 'V Number : ', 'ctxt' ),
    'description'   => __( 'Enter the title of your custom text field.', 'ctxt' ),
    'desc_tip'      => true,
    'class'         => 'v_number_class',
    'value'         => wc_get_order_item_meta( $item_id, '_v_number' ),
) );
} 
add_action( 'woocommerce_before_order_itemmeta', 'add_order_item_custom_field', 10, 2 );

// Save the custom field value
function save_order_item_custom_field_value( $post_id, $post ){
$order = wc_get_order( $post_id );
foreach ( $order->get_items() as $item_id => $item ) {
    if( isset( $_POST['v_number'.$item_id] ) ) {
        $item->update_meta_data( '_v_number', sanitize_text_field( $_POST['v_number'.$item_id] ) );
        $item->save();
    }
}
$order->save();
}
add_action('save_post', 'save_order_item_custom_field_value' );

enter image description here

// Display meta my account view order page
 printf ( 
'<p><a>V Number :  <strong>' . $order->get_meta('_v_number') . '</strong></a></p>'
); 

enter image description here

1 个答案:

答案 0 :(得分:2)

它应该打印您的自定义订单元值。

add_action( 'woocommerce_view_order', 'print_custom_order_meta' );
function print_custom_order_meta( $order_id ){
    $order = wc_get_order($order_id);

    foreach( $order->get_items() as $item ) {
        echo 'V Number for '. $item->get_name() .' - ' . $item->get_meta( '_v_number', true ) . '<br>';
    }
}

编辑

需要在每个产品项目后显示元值,您需要使用类似这样的不同操作进行挂钩。

add_action('woocommerce_order_item_meta_end', 'show_order_meta', 11, 3);
function show_order_meta( $item_id, $item, $order ) {
    echo '<br>V Number for '. $item->get_name() .' - ' . $item->get_meta( '_v_number', true ) . '<br>';
}