已经在子页面上循环访问子页面

时间:2015-01-08 12:21:01

标签: php wordpress loops parent-child

我有一个属性站点,其中父项是开发,子项是开发中的图。

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

<?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(); ?>

我希望显示相同的内容(开发的所有子页面),但是在子页面本身上。基本上我需要检查页面是否有父页面然后遍历子页面...

有什么想法吗?

1 个答案:

答案 0 :(得分: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; 

} 
?>

我现在已经选择了另外一件事,你应该在wp_reset_postdata()之前endif使用endwhile但{{1}}

之后