2015-01-08 201 views
0

我有一个属性网站,其中父母是一个发展,并且孩子是发展中的情节。当儿童页面已经在儿童页面上循环浏览子页面

在开发页面上,我使用下面的代码来显示该开发的所有子页面(绘图页)。

<?php 
    $args = array(
     'post_type'  => 'property', 
     'posts_per_page' => -1, 
     'post_parent' => $post->ID, 
     'orderby'  => 'plot_number', 
     'order'   => 'ASC' 
    );  
    $parent = new WP_Query($args);  
    if ($parent->have_posts()) : 
    ?> 
     <?php while ($parent->have_posts()) : $parent->the_post(); ?> 

     //CONTENT GOES HERE 

     <?php endwhile; ?> 
    <?php endif; wp_reset_query(); ?> 

我想显示相同的东西(发展的所有子页面),但在子页面本身。基本上我需要检查页面是否有父页,然后通过子页面循环...

任何想法?

+0

很简单。只需用'wp_get_post_parent_id'获取当前页面的父母号码,然后在查询中获取它的孩子。 – vaso123

+0

谢谢你,你能举个例子吗? –

+0

页面列表插件(https://wordpress.org/plugins/page-list/)执行此操作。你可以使用它,或者下载它来了解它是如何工作的。 –

回答

1

您可以使用与上述完全相同的查询,只需稍作修改即可。在我继续之前只需要注意一点,如果您使用WP_Query,则应该使用wp_reset_postdata()而不是wp_reset_query()。后者使用query_posts这在任何情况下,你应该从未使用

获得那个职位是家长,您可以使用$post->post_parent。这将返回当前页面父级的ID。如果ID返回0,则表示这是顶级页面。所以,你也想检查是否$post->post_parent不是0运行查询之前,或者你会回来的所有帖子,无论当前页面是顶级页面

<?php 

global $post; 

if(0 != $post->post_parent) { 

    $args = array(
     'post_type'  => 'property', 
     'posts_per_page' => -1, 
     'post_parent' => $post->post_parent, 
     'orderby'  => 'plot_number', 
     'order'   => 'ASC' 
    );  
    $parent = new WP_Query($args);  
    if ($parent->have_posts()) : 
    ?> 
     <?php while ($parent->have_posts()) : $parent->the_post(); ?> 

     //CONTENT GOES HERE 

     <?php endwhile; ?> 
    <?php wp_reset_postdata(); endif; 

} 
?> 

只是一件事那我现在拿起来了,你应该在endif之前用wp_reset_postdata()但是endwhile之后

+0

这看起来很完美。我会尽快尝试并回复你,谢谢。 –

+0

没问题,花点时间仔细测试:-) –

+0

辉煌,完美的作品,对我来说很有意义。谢谢你的提示和重置。每一天都是学校的一天! –