正在尝试列出带有WP_QUERY的子页

时间:2015-07-09 作者:ptf

我正在尝试列出我制作的自定义页面的所有子页面。

在我的自定义页面中,我这样做是为了列出页面:

<?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和风扇突然启动。

有人知道为什么吗?

2 个回复
最合适的回答,由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(), 等

SO网友:Andrey
<?php 
global $post;
$child_pages_query_args = array(
    \'post_type\'   => \'page\',
    \'post_parent\' => \'93\',
    \'orderby\'     => \'date DESC\'
);
$child_pages = new WP_Query( $child_pages_query_args );
?>

<?php if ( $child_pages->have_posts() ) :  while ( $child_pages->have_posts() ) : $child_pages->the_post(); ?>

<div class="col-lg-6">
<div class="featured-pwrap">  
    <?php if ( has_post_thumbnail() ) { the_post_thumbnail(\'home-pages-thumb\'); } else { ?>
    <img class="attachment-home-pages-thumb" src="<?php bloginfo(\'template_directory\'); ?>/images/default-image.jpg" alt="<?php the_title(); ?>" />
    <?php } ?>
<h3><?php the_title(); ?></h3>
<a href="<?php the_permalink(); ?>" class="futured-more">Read more</a>
</div>
</div>
<?php endwhile; endif; wp_reset_postdata(); ?>
结束

相关推荐

the_content and wp_link_pages

许多插件似乎在为the_content 展示相关帖子、广告等。问题是,这些页面出现在分页后的前面,因此分页被向下推到下面。是否可以在内容之后立即显示分页后的内容?它出现了wp_link_pages 只能在循环内使用。