You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何安全修改WooCommerce核心文件html-order-item-meta.php且避免更新覆盖

如何安全修改WooCommerce核心文件html-order-item-meta.php且避免更新覆盖

嘿,我太懂你这种头疼的情况了——直接改WooCommerce核心文件解决了YITH元数据不显示的问题,但每次插件更新都会把修改冲掉,子主题又不管用,对吧?别慌,咱们用WooCommerce原生的钩子就能干净彻底地解决这个问题,完全不用碰核心文件。

方法一:用woocommerce_order_item_display_meta_key过滤器直接替换显示的键

这个过滤器专门用来控制订单项元数据的键显示内容,我们可以在这里判断如果display_key存在,就用它代替原来的key。

把下面的代码添加到子主题的functions.php文件或者自定义插件里:

add_filter( 'woocommerce_order_item_display_meta_key', 'replace_meta_key_with_display_key', 10, 2 );
function replace_meta_key_with_display_key( $display_key, $meta ) {
    // 检查display_key是否存在,存在就替换
    if ( isset( $meta->display_key ) ) {
        $display_key = $meta->display_key;
    }
    return $display_key;
}

方法二:用woocommerce_order_item_get_formatted_meta_data过滤器修改元数据对象

如果需要更底层的控制,我们可以直接修改格式化后的元数据数组,把每个元数据的key字段替换成display_key,这样核心文件调用$meta->key时拿到的就是我们想要的值了。

代码如下:

add_filter( 'woocommerce_order_item_get_formatted_meta_data', 'modify_order_item_meta_data', 10, 2 );
function modify_order_item_meta_data( $formatted_meta, $item ) {
    foreach ( $formatted_meta as $meta_key => $meta ) {
        if ( isset( $meta->display_key ) ) {
            $formatted_meta[ $meta_key ]->key = $meta->display_key;
        }
    }
    return $formatted_meta;
}

为什么子主题不行?

你之前尝试用子主题覆盖这个文件没效果,是因为WooCommerce的后台模板(比如/includes/admin/下的这些文件)不在子主题的模板覆盖范围内——子主题只能覆盖前端的用户-facing模板(比如woocommerce/目录下的那些),后台的模板修改必须用钩子或者自定义插件。

更稳妥的方式:自定义插件

如果不想依赖子主题,推荐创建一个简单的自定义插件:

  1. 在wp-content/plugins/目录下新建一个文件夹,比如woocommerce-yith-meta-fix
  2. 在文件夹里新建一个PHP文件,比如woocommerce-yith-meta-fix.php
  3. 把下面的代码粘贴进去:
<?php
/**
 * Plugin Name: WooCommerce YITH Meta Display Fix
 * Description: 修复后台订单页YITH插件元数据不显示的问题
 * Version: 1.0
 * Author: 你的名字
 */

add_filter( 'woocommerce_order_item_display_meta_key', 'replace_meta_key_with_display_key', 10, 2 );
function replace_meta_key_with_display_key( $display_key, $meta ) {
    if ( isset( $meta->display_key ) ) {
        $display_key = $meta->display_key;
    }
    return $display_key;
}
  1. 登录WordPress后台,找到这个插件并激活即可。这样哪怕你切换主题,修改也依然生效。

备注:内容来源于stack exchange,提问作者Thomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 10:29:29