如何使用Meta Box?WordPress自定义字段前端不显示值求助
解决自定义字段前端不显示问题 + Meta Box基础使用指南
一、先搞定你当前的前端显示故障
从你的代码和描述来看,我先帮你排查核心问题,再给出修正方案:
1. 先确认后台字段是否真的存了值
登录WordPress后台,打开任意一篇testimonial类型的内容,检查customer和position字段是否已经填写内容并点击了保存。如果后台都没录入值,前端肯定显示不出东西。
2. 修正代码里的潜在问题
你的代码有几个可以优化的点,同时也可能是导致显示失败的原因:
- 重复调用
get_post_meta()完全没必要,调用一次即可 - 在WP_Query循环里,用
get_the_ID()替代$post->ID更稳妥(避免全局变量冲突) - 可以加个调试代码,直观看到是否获取到了字段值(上线前记得删掉)
修正后的代码如下:
$tecno_testimonial_post = new WP_Query( array( 'post_type' => 'testimonial', 'posts_per_page' => $testimonial_count, )); if($tecno_testimonial_post->have_posts()) : while($tecno_testimonial_post->have_posts()) : $tecno_testimonial_post->the_post(); // 只调用一次get_post_meta,用get_the_ID()获取当前文章ID更可靠 $my_meta = get_post_meta(get_the_ID(), '_my_meta', true); // 调试用:打印$my_meta看看是否拿到了值(上线前删除这行) // var_dump($my_meta); ?> <div class="testimonial-block-two col-lg-6 col-md-12 col-sm-12"> <div class="inner-box"> <div class="upper-box"> <div class="quote-icon flaticon-two-quotes"></div> <div class="author-info"> <h3> <?php if(isset($my_meta['customer']) && !empty($my_meta['customer'])) : ?> <?php echo esc_html($my_meta['customer']); ?> <?php endif; ?> </h3> <div class="designation"> <?php if(isset($my_meta['position']) && !empty($my_meta['position'])) : ?> <?php echo esc_html($my_meta['position']); ?> <?php endif; ?> </div> </div> </div> </div> </div> <?php endwhile; // 重置查询,避免影响后续的WordPress循环 wp_reset_postdata(); endif;
3. 额外排查点
- 确认Meta Box字段组的设置:字段的
ID是不是customer和position,并且字段组已经关联到testimonial自定义文章类型 - 如果是用组字段,确认组的ID确实是
_my_meta(对应你代码里的元数据键)
二、Meta Box基础使用流程
如果你刚接触Meta Box,这里给你梳理下核心步骤:
1. 安装插件
在WordPress后台插件市场搜索「Meta Box」,安装并激活官方免费版插件(基础需求完全够用)。
2. 创建字段组
- 后台左侧菜单找到「Meta Box」→「字段组」,点击「添加新」
- 填写字段组名称(比如「客户评价信息」),在「设置」标签页选择「位置」为「文章类型」,勾选你的
testimonial自定义文章类型
3. 添加字段
在「字段」标签页点击「添加字段」:
- 比如添加「客户姓名」:类型选「文本」,字段ID填
customer,设置好字段标签 - 再添加「职位」:类型选「文本」,字段ID填
position - 如果要把这两个字段归为一组,可以用「组」字段类型,此时组的ID就是
_my_meta(对应你代码里的键),再在组内添加两个子字段
4. 前端显示
- 单个字段直接用
get_post_meta(get_the_ID(), '字段ID', true)获取值 - 组字段就像你代码里那样,先获取整个数组,再通过键名取出对应值
内容的提问来源于stack exchange,提问作者fatima1997
相关产品推荐
相关产品推荐

