如何在[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
相关产品推荐
相关产品推荐

