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

标签 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 => 元字段“单位”在每个产品下正确显示,但由于某种原因它破坏了页面并且我在页面底部有一条严重错误消息(以红色突出显示)。

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

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

最佳答案

您需要仅针对订单“行”项目和管理以避免错误,如下所示:

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

它现在应该可以更好地工作而不会出现错误。

关于php - 在 WooCommerce 管理订单页面上将产品自定义字段显示为订单项元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64066608/

相关文章:

wordpress - Nginx 配置到容器内的 Wordpress

php - 在特定产品的 WooCommerce 购物车页面中的购物车项目名称后添加产品 ID

jquery - 无法删除我的列表元素符号样式,即使它在 CSS 中设置为无

woocommerce - 存档页面的页面描述仅显示在第一页上

php - 将 blob 图像(存储在数据库中)下载到我的计算机

PHP MySQL 选择随机行,其中行不同

php - 电商成员(member)付费后订阅

php - Laravel - 如何从 auth 用户名匹配的另一个表中获取 profile_picture?

php - 除 WooCommerce 中的特定产品外,最低购物车金额

wordpress - 在 woocommerce 电子邮件中显示商品价格(不是商品总额)