Woocommerce:输出前翻译/更改订单项目元键

Woocommerce: Translate/change order item meta key before output

提问人:root66 提问时间:10/18/2019 更新时间:12/22/2021 访问量:503

问:

有一个名为“woocommerce_checkout_create_order_line_item”的操作,您可以在其中使用“add_meta_data(meta_key, meta_value)”方法将元数据添加到订单项。 每个示例都使用了以下语法:add_meta_data(__('Some key name', 'woocommerce'), $value);

只要管理员和客户设置了相同的语言并且该字段只是非正式的,这是完美的。 但是我以后必须以编程方式处理该字段。因此,无论使用哪种语言,密钥都必须始终相同。 所以我使用一个简单的字符串,但它不会再在管理订单区域、感谢页面、购物车等中翻译。

如何覆盖订单项元数据的自动输出?我试图挂接到'woocommerce_before_order_itemmeta($item_id, $item, $product)'(管理订单页面),但在那里我只能删除 $item->delete_meta_data('my_key'),我无法添加临时元键 => $item->add_meta_data(__('Translated key'), $value); 我也试过:

$item->set_meta_data(array('id' => 0, 'key' => __('Translated key'), 'value' => 'test123'));
print_r($item->get_meta_data());

谢谢!

钩子-WooCommerce

评论


答:

2赞 Michel FW 12/22/2021 #1

无需在元键中进行转换。

你可以做的是使用钩子woocommerce_order_item_display_meta_key。在那里,您可以抓住您的密钥并输出一个翻译以供显示。

此外,如果您有一些键不应显示在订单详细信息中,但仅供内部使用,则可以筛选键以不显示所有自定义元键。这可以通过woocommerce_hidden_order_itemmeta来完成

这是一篇关于使用订单项元数据的好文章: https://www.ibenic.com/manage-order-item-meta-woocommerce/