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

如何在[products]短代码的商品项中显示文章自定义字段comp_city

解决方法

问题核心是你读取comp_city字段时误用了商品的$post->ID——在[products]短代码的循环逻辑里,全局$post指向的是当前遍历的商品,而非嵌入短代码的文章。要显示文章的自定义字段,必须先获取嵌入短代码的文章ID,再读取对应元数据。

修改后的完整代码如下:

add_action("add_fields_prod_item", "woo_add_fields_prod_item", 5);
function woo_add_fields_prod_item()
{
    global $post, $product;

    // 读取商品自定义字段
    $demo_name = get_post_meta($post->ID, "comp_name", true);
    $demo_servtype = get_post_meta($post->ID, "comp_type", true);

    // 获取嵌入短代码的文章ID,读取文章自定义字段
    $current_post_id = get_queried_object_id();
    $demo_city = get_post_meta($current_post_id, "comp_city", true);

    // 渲染商品自定义字段
    if ($demo_name) {
        echo '<div class="cart-meta-attr"><span class="param">Name:</span> <span class="value">' .
            $demo_name .
            "</span> ";
    }
    if ($demo_servtype) {
        echo '<div class="cart-meta-attr"><span class="param">Type:</span> <span class="value">' .
            $demo_servtype .
            "</span> ";
    }

    // 渲染文章自定义字段
    if ($demo_city) {
        echo '<div class="cart-meta-attr"><span class="param">City:</span> <span class="value">' .
            $demo_city .
            "</span> ";
    }
}

关键说明:

  • get_queried_object_id()会返回当前访问页面/文章的ID,也就是嵌入[products]短代码的目标文章ID,以此正确读取comp_city字段。
  • 商品自定义字段的读取逻辑无需改动,$post->ID仍指向当前循环的商品对象。

替换原有函数后,即可在每个商品项中正常显示文章的城市字段。

内容的提问来源于stack exchange,提问作者Hoak Pandarian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 04:30:25