当前位置: 首页 > 知识库问答 >
问题:

在WooCommerce管理订单详细信息页面的订单项目表中显示产品元

马朝斑
2023-03-14

我使用以下代码在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>';

}

它显示“前缀tempiconsegna”,这是自定义图元,如:

  • 可在3天内提供

我的问题是,如果我改变了产品的可用性,它也改变了以前的订单。

当我更新产品的可用性时,如何在不改变的情况下显示订单时的值?

共有1个答案

宣弘新
2023-03-14

这是因为您正在使用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 );
 类似资料:
  • 我正在搜索和尝试它2天没有成功,请帮助。 我想筛选woocommerce订单,以便根据产品属性将其他详细信息从db添加到订单详细信息页面,但我找不到适合此任务的woocommerce操作/筛选器挂钩。这里假设变量; 如果,那么我需要将自定义数据从数据库添加到订单详细信息页面。 注意:我不想添加额外的元框,而是想更改订单明细表: 将默认产品映像替换为存储在数据库和中的映像, 在产品名称下面添加包含自

  • 对于Woocommerce分组产品,我使用以下代码在购物车和结帐页面中显示父产品名称: 代码来源于此:将父产品名称添加到WooCommerce中的每个购物车项目名称中 现在,我想在订单详细信息和后端也显示此父产品名称。 我将感谢任何对此的帮助。

  • 我想在“管理”中产品标题下方的“编辑订单”页面中显示“产品简短说明”。 我对WooCommerce比较陌生,根据我的发现,我相信我应该在订购之前使用动作挂钩 比如: 任何关于如何进一步调整的帮助都将不胜感激

  • 上次WooCommerce更新后,订单详细信息不再显示在感谢页面上。从那时起,我使用WooCommerce Storefront主题开发了一个儿童主题。不管我做了什么,我看到的只是感谢页面上的“谢谢”信息。 到目前为止我所尝试的: > 对整个进程进行故障排除,以查找任何可能出错的问题。这包括以下内容: 检查了调用order-details模板和it相关操作挂钩的wc模板函数(均存在) 确保我的Ch

  • 我想在单独的页面上显示在woocommerce我的帐户最近订单中找到的特定产品id的订单表。更准确地说,如果订单中的产品id为X,则显示当前用户的所有最近订单。 我试图使用这些参考: Woocommerce-如何在单独页面上显示订单详细信息(我的帐户) 从Woocommerce中的产品ID获取所有订单ID WooCommerce:获取产品的所有订单 但是我无法将与以便当前用户针对特定产品id的所有