我使用woocommerce_add_order_item_meta操作为每个项目添加自定义项元。 我不需要在订单明细中显示这个自定义元,因为它是一个用于打印pdf的arry stringy。
如何删除此元自定义项?有没有采取行动呢?
由于
答案 0 :(得分:3)
我理解它有点老问题,但我正在回答将来会遇到同样问题的其他用户。
如果您希望订单项元数据不显示在管理订单详细信息页面中,则应在元名称的开头附加下划线(_)。
示例:
_custom_order_meta
答案 1 :(得分:1)
下划线技巧不再适用。在Woo 3.x中有一个隐藏的元数组:
add_filter('woocommerce_hidden_order_itemmeta',
array($this, 'hidden_order_itemmeta'), 50);
function hidden_order_itemmeta($args) {
$args[] = 'my_hidden_meta';
return $args;
}
答案 2 :(得分:0)
听起来你需要保留它才能打印PDF。如果您覆盖order-details.php
模板,则可以更改:
$item_meta = new WC_Order_Item_Meta( $item['item_meta'], $_product );
到
$array = $item['item_meta'];
if( isset( $array['your_pdf_array_key'] ) ){ unset( $array['your_pdf_array_key'] ); }
$item_meta = new WC_Order_Item_Meta( $array, $_product );
修改强>
wc_add_order_item_meta()
函数有4个参数,如代码所示:
function wc_add_order_item_meta( $item_id, $meta_key, $meta_value, $unique = false ) {
return add_metadata( 'order_item', $item_id, $meta_key, $meta_value, $unique );
}
如果您选择带有前面下划线的$meta_key
,则元数据将自动隐藏在结帐/订单接收页面,“我的订单”的“我的帐户”区域列表中。在管理员的订单概述页面中。
因此,我建议您使woocommerce_add_order_item_meta
回调函数看起来如下所示:
add_action( 'woocommerce_add_order_item_meta', '25979024_add_order_item_meta', 10, 3 );
function 25979024_add_order_item_meta( $order_item_id, $cart_item, $cart_item_key ) {
wc_add_order_item_meta( $order_item_id, '_pdf_something', 'hide this stuff' );
}