问题描述
我用一堆自定义元数据创建了我的woocommerce产品(水果和蔬菜),我可以正确输入这些数据并将其显示在我的网站上。这些数据之一就是单位(即公斤,6的盒子等)。
在管理订单页面上,我想在产品名称的正下方显示此“单位”字段(例如:草莓-公斤/鸡蛋-6盒,等等)
我尝试了以下代码并获得以下结果(请参见屏幕截图):
add_action( 'woocommerce_before_order_itemMeta','unit_before_order_itemMeta',10,3 );
function unit_before_order_itemMeta( $item_id,$item,$_product ){
if( $unit = $_product->get_Meta('unite') ) {
echo '<p>'.$unit.'</p>';}
}
这是结果: Screemshot single order page =>元字段“单位”正确显示在每种产品下,但由于某种原因,它会打断页面,并且在页面底部有一个严重的错误消息(以红色突出显示)。
我在这里阅读了很多有关捕获和显示(返回,打印...)元数据的不同方式的文章,但是我总是最终遇到这个严重错误。
有人可以帮助我了解我的代码有什么问题吗?
解决方法
您只需将订单“订单项”定位为目标商品,并进行管理以避免错误,如下所示:
add_action( 'woocommerce_before_order_itemmeta','unit_before_order_itemmeta',10,3 );
function unit_before_order_itemmeta( $item_id,$item,$product ){
// Only "line" items and backend order pages
if( ! ( is_admin() && $item->is_type('line_item') ) ) return;
$unit = $product->get_meta('unite');
if( ! empty($unit) ) {
echo '<p>'.$unit.'</p>';
}
}
现在应该可以更好地工作了,没有错误。