在WooCommerce管理员订单页面上将产品自定义字段显示为订单项元

时间:2020-09-25 14:57:55

标签: php wordpress woocommerce metadata admin

我用一堆自定义元数据创建了我的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 =>元字段“单位”正确显示在每种产品下,但由于某种原因,它会打断页面,并且在页面底部有一个严重的错误消息(以红色突出显示)。

我在这里阅读了很多有关捕获和显示(返回,打印...)元数据的不同方式的文章,但是我总是最终遇到这个严重错误。

有人可以帮助我了解我的代码有什么问题吗?

1 个答案:

答案 0 :(得分:1)

您只需将订单“订单项”定位为目标商品,并进行管理以避免错误,如下所示:

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>';
    }
}

现在应该可以更好地工作了,没有错误。