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

添加到订单项元数据中的自定义元数据未显示在订单项元数据中

晋安国
2023-03-14

我有一个WooCommerce订单的自定义元数据,现在我想在结账后在感谢页面上显示它,但是,数据不可用。数据保存在管理员中,我似乎无法访问它。

function custom_order_item_meta( $item_id, $values ) {

    if ( ! empty( $values['custom_option'] ) ) {
        woocommerce_add_order_item_meta( $item_id, 'custom_option', $values['custom_option'] );           
    }
}
add_action( 'woocommerce_add_order_item_meta', 'custom_order_item_meta', 10, 2 );

但是当我转储wc_get_order时,我的元数据不存在。

我正在使用;

woocommerce\u add\u order\u item\u meta()保存数据,但转储var\u dump(wc\u get\u order($order-

我是否应该使用另一个钩子来访问这些数据?


共有1个答案

颜安宁
2023-03-14

您要查找的数据不是订单元数据,而是订单项元数据,位于wp_woocommerce_order_itemmeta数据库表中(请参阅下面如何访问此数据)。

自从woocommerce 3以来,一个更好的钩子取代了旧的woocommerce\u add\u order\u item\u metahook。

显示和可读的订单项目元数据:

要使自定义订单项元数据显示在任何地方,元键应该是一个可读的标签名称,并且不以下划线开头,因为该数据将显示在每个订单项下。

守则:

add_action( 'woocommerce_checkout_create_order_line_item', 'custom_order_item_meta', 20, 4 );
function custom_order_item_meta( $item, $cart_item_key, $values, $order ) {
    if ( isset( $values['custom_option'] ) ) {
        $item->update_meta_data( __('Custom option', 'woocommerce'), $values['custom_option'] );          
    }
}

在“订单已收到”(谢谢)页面中,您将看到如下内容:

这也将显示在后端和电子邮件通知中。

要访问此订单项目数据,需要从foreach循环中的order对象获取项目:

foreach( $order->get_items() as $item_id => $item ){
    $custom_data = $item->get_meta( 'Custom option' );
}

要获取第一个订单项(避免Foreach循环),您将使用:

$items       = $order->get_items(); // Order items
$item        = reset($items); // The first Order item
$custom_data = $item->get_meta( 'Custom option' ); // Your custom meta data

相关:在woocommerce 3.4中替换woocommerce\添加\订单\项目\元挂钩

 类似资料:
  • 我有一个自定义插件,允许客户向订单中添加自定义信息。 项目被添加到购物车,自定义数据显示在购物车页面上。但是,自定义信息不会转移到后端的订单页面。理想情况下,我也希望将自定义数据添加到客户的订单电子邮件中。 目前的代码如下: 我试图修改我在网上找到的一段代码片段,并将其添加到上述代码中。但是,当我实现此功能时,购物车完全崩溃: 任何帮助都将不胜感激。我没有太多的编码经验,我正在努力找到一种方法来实

  • 在Woocommerce管理屏幕中,我试图使用订单行元数据显示一个按钮,该按钮将打开一个包含dropship供应商URL的新窗口。我已成功从订单上的产品中提取供应商URL,并将其推送到订单行项目。 我可以将元数据更改为按钮,但其结果是包含自定义选项的其他自定义字段被删除。 这是我添加到文件的完整代码 这些图像显示了使用最后一段代码之前和之后的情况。 之前: 之后: 我的代码哪里出了问题?我试图实现

  • 我正在为WooCommerce开发一个插件。我想覆盖admin的订单详细信息模板。我已经阅读了关于https://www.skyverge.com/blog/override-woocommerce-template-file-within-a-plugin/,但我仍然不明白如何覆盖admin的订单详细信息模板。以下是我的代码: 它不会在订单详细信息之后调用与

  • 关于WooCommerce。我有我要添加到购物车的自定义数据。在functions.php文件中,我有以下功能。 这是可行的,自定义数据显示在购物车中。但是,定制数据不会显示在订单和订单电子邮件上。我在Stackoverflow上看到了一些解决这个问题的答案,但我无法让它们适用于我的情况。我提到的解决方案是。 在Woocommerce中保存和显示订单项自定义元数据 显示和保存添加的自定义购物车项目

  • 在Woocommerce中,我使用“在管理订单中显示Woocommerce自定义签出字段值使其可编辑”回答代码,在管理订单页面中显示自定义字段值,效果良好。 我的问题:是否可以在电子邮件通知中显示该自定义字段值?

  • 我目前正在成功地向我的WooCommerce产品页面添加一个字段,该字段显示以下值: 在推车(前端), 在结账页面(前端), 在订单页(前端), 并在管理个人订单页面(后端)。 问题是:它在管理订单的“自定义字段”元框中没有显示为自定义字段,其值在其中,而只是在订单页面中显示为文本。 这是我的工作代码: 我认为这是代码的最后一点需要更改。它当前显示订单项下的文本,因此我可能需要调整? 我什么都试过