我正在尝试列出我制作的自定义页面的所有子页面。
在我的自定义页面中,我这样做是为了列出页面:
<?php get_header(); ?>
<?php
$subpages = new WP_Query( array(
\'post_type\' => \'page\',
\'post_parent\' => $post->ID,
\'posts_per_page\' => -1,
\'orderby\' => \'menu_order\'
));
if ($subpages->have_posts()) : while ($subpages->have_posts()) : the_post(); ?>
...
<?php endwhile; else : ?>
...
<?php endif; ?>
<?php get_footer(); ?>
但这不起作用。现在它只列出了它自己(父对象,我根本不想列出),而没有列出它的子对象。
此外,网站只会继续加载,而除了页脚以外的所有内容都会显示出来。这就像它返回页面的一半,然后在处理其余部分时挂起。在运行这个时,我的CPU和风扇突然启动。
有人知道为什么吗?
最合适的回答,由SO网友:Howdy_McGee 整理而成
我测试了这个查询,它确实起了作用,所以我唯一能发现的误导性但不正确的地方就是直接在你后面while()
您拥有的声明the_post()
. 这在辅助查询中不起作用,它应该如下所示:
<?php if( $subpages->have_posts() ) : ?>
<?php while( $subpages->have_posts() ) : $subpages->the_post(); ?>
...
<?php endwhile; ?>
<?php endif; ?>
请注意
$subpages->the_post();
- 由于这是一个辅助查询,我们需要继续引用查询变量。在此之后,所有正常的循环函数都按预期工作,例如:
the_title()
,
the_content()
, 等