一个带条件的自定义循环,用于检查子帖子

时间:2014-05-14 作者:cooper33

我有一个以999页ID为父的页循环(此循环中的页也有另一个子页)

$args = array( 
\'post_type\' => \'page\',
\'post_parent\' => 999,
\'order\' => \'ASC\',
\'posts_per_page\' => -1
);
$loop = new WP_Query( $args );
现在我想获取页面,但有条件的话,当循环中的页面有子页面时,我想显示另一个结构。

<?php if ( have_posts() ) : ?>
    <?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
       <?php if (condition if current post have subpages ) : ?>
            //  html structure, 
       <?php else : ?>
            // another default structure
       <?php endif; ?>
    <?php endwhile; ?>
<?php endif; ?>
我试过让孩子们去看,但没有成功,我只需要适当的条件。提前感谢您的帮助。

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

适当命名的get_children() 应该是你想要的。

if ( have_posts() ) {
  while ( $loop->have_posts() ) {
    $loop->the_post();
    $args = array(
      \'post_parent\' => get_the_ID(), // the ID from your loop
      \'post_type\'   => \'page\', 
      \'posts_per_page\' => 1, // you only need to know if you have children so one is enough
      \'post_status\' => \'publish\' 
    );
    $c = get_children($args);

    if (!empty($c)) {
      //  html structure, 
    } else {
      // another default structure
    }
  }
}
如果您在这个循环中有多篇帖子,那么您将在页面上运行大量查询。您应该考虑缓存结果。

结束

相关推荐

wp_query inside the_loop

我的循环有这个问题。我正在制作一个将从主查询调用的快捷码。它将显示在\\u循环的首页上。因为某种我无法理解的原因。第二个查询只显示一篇文章,而它应该显示3篇。因此,短代码将出现在页面内容中。在“设置”部分,我将首页设置为“主页”,将博客页面设置为“博客”,但主页不是模板。它是由索引生成的。使用WordPress 2014主题的php页面。因此,在“主页”内容区域,我有一个快捷码,它生成第二个循环,从一个名为“特色”的类别中获取3篇文章。 $featured = new WP_Query( array( \