WordPress中如何在子页面调用父页面自定义字段到页脚
这个场景我碰到过好几次,要解决多级子页面调用顶层父页自定义字段的问题,关键就是先找到当前页面的最顶层父页面ID,再用这个ID去拉取对应的字段值。我帮你调整代码:
第一步:添加获取顶层父页面ID的函数
先把这个函数加到你的主题functions.php文件(或者自定义插件里),它会递归查找页面的最上层父级:
function get_top_parent_id($post_id) { // 获取当前页面的父ID $parent_id = wp_get_post_parent_id($post_id); // 如果存在父级,继续往上追溯,直到没有父级为止 while ($parent_id != 0) { $post_id = $parent_id; $parent_id = wp_get_post_parent_id($post_id); } // 返回最顶层父页ID(如果当前页面就是顶层,返回自身ID) return $post_id; }
第二步:修改你的页脚代码
把原来直接使用$post->ID的地方,替换成我们刚获取的顶层父页面ID:
<?php // 获取当前页面的顶层父页面ID $top_parent_id = get_top_parent_id($post->ID); // 从顶层父页面读取自定义字段 $footer_title = get_post_meta($top_parent_id, '_cmb_footer_block_title', true); $footer_content = apply_filters('the_content', get_post_meta($top_parent_id, '_cmb_footer_block_text', true)); ?> <div class="col-xs-12 col-sm-6 col-md-3 footer-col-1"> <h2 class="footer-title"><?php echo $footer_title; ?></h2> <?php echo $footer_content; ?> </div>
额外说明
- 不管是一级子页还是N级子页面,这个逻辑都会自动定位到最上层的父页面,完美适配你的8个父页面场景。
- 如果当前页面本身就是没有父级的顶层页面,函数会直接返回它自己的ID,所以顶层页面的页脚内容依然正常显示,不需要额外加判断逻辑。
- 记得确认你的顶层父页面已经正确设置了
_cmb_footer_block_title和_cmb_footer_block_text这两个自定义字段哦。
内容的提问来源于stack exchange,提问作者user8116000
相关产品推荐
相关产品推荐

