簡體   English   中英

在 WooCommerce 管理訂單詳細信息頁面的訂單項目表中顯示產品元數據

[英]Show product meta in order items table on WooCommerce admin order details page

我正在使用以下代碼在 WooCommerce 管理訂單詳細信息頁面上的訂單項目表中顯示自定義產品元數據:

add_action('woocommerce_admin_order_item_values', 'tempiconsegna_admin_order_item_values', 10, 3);
function tempiconsegna_admin_order_item_values($_product, $item, $item_id = null) {

    $value = get_post_meta($_product->post->ID, 'prefix-tempiconsegna', 1);

    // display the value
    echo '<td>' . $value . '</td>';

}

它顯示“prefix-tempiconsegna”,它們是自定義元數據,例如:

  • 3天內可用
  • 現在有空
  • ETC..

我的問題是,如果我更改產品的可用性,它也會在以前的訂單中更改。

當我更新產品的可用性時,如何使它訂單時顯示價值而不改變

那是因為您正在使用get_post_meta()和 productID,所以如果您調整產品的數據,它也會更改顯示它的數據,在您的情況下是當前和以前的訂單。

為了防止這種情況,您必須添加每個訂單行項目的數據,這可以通過以下方式完成:

function action_woocommerce_checkout_create_order_line_item( $item, $cart_item_key, $values, $order ) {
    // The WC_Product instance Object
    $product = $item->get_product();
    
    // Get value
    $value = $product->get_meta( 'prefix-tempiconsegna' );
    
    // NOT empty
    if ( ! empty ( $value ) ) {
        $item->update_meta_data( 'prefix-tempiconsegna', $value );
    }
}
add_action( 'woocommerce_checkout_create_order_line_item', 'action_woocommerce_checkout_create_order_line_item', 10, 4 );

然后在 WooCommerce 管理訂單詳細信息頁面中顯示此內容,請使用:

// Add header
function action_woocommerce_admin_order_item_headers( $order ) {
    // Set the column name
    $column_name = __( 'My column', 'woocommerce' );
    
    // Display the column name
    echo '<th class="my-class">' . $column_name . '</th>';
}
add_action( 'woocommerce_admin_order_item_headers', 'action_woocommerce_admin_order_item_headers', 10, 1 );

//Add content
function action_woocommerce_admin_order_item_values( $product, $item, $item_id ) {
    // Only for "line_item" items type, to avoid errors
    if ( ! $item->is_type('line_item') ) return;

    // Get value
    $value = $item->get_meta( 'prefix-tempiconsegna' );
    
    // NOT empty
    if ( ! empty ( $value ) ) {
        echo '<td>' . $value . '</td>';
    }
}
add_action( 'woocommerce_admin_order_item_values', 'action_woocommerce_admin_order_item_values', 10, 3 );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM