WordPress父文章页展示子文章时内容全消失,请问代码存在什么错误?
问题原因&修复方案
触发页面空白的核心原因
- PHP语法错误:数组定义时
'post_parent' => get_the_ID();末尾错误使用了分号,数组元素分隔应使用逗号,即使是单元素数组也不允许在元素后加分号,该问题直接触发PHP解析报错,生产环境默认关闭错误显示时就会表现为全页空白。 - 控制结构不闭合:你使用了
if($query->have_posts()) :冒号风格的条件判断语法,但代码末尾没有对应的endif;做结构闭合,同样属于PHP语法错误,会触发解析失败。
其他可优化的问题
- 自定义查询调用
the_post()后会修改全局$post变量,若未调用wp_reset_postdata()恢复主循环的文章数据,会导致父页面后续的主循环内容输出异常。 the_title()方法本身会直接输出标题,不需要额外加echo调用,该冗余代码不会触发报错,但属于不必要的写法。
修复后的可用代码
<?php $children = array( 'post_parent' => get_the_ID(), 'post_type' => 'page', // 若子内容是自定义文章类型,可修改为对应文章类型别名 'posts_per_page' => -1 // 配置展示所有匹配的子文章 ); $query = new WP_Query( $children ); if($query->have_posts()) : while($query->have_posts()) { $query->the_post(); the_title(); } // 重置文章数据,避免影响父页面主循环 wp_reset_postdata(); endif; ?>
如果需要排查类似报错,可临时修改wp-config.php中的WP_DEBUG常量值为true开启调试模式,页面会直接输出具体的错误信息和行数,排查完成后改回false即可。
内容的提问来源于stack exchange,提问作者Rama Absa
相关产品推荐
相关产品推荐

