我有一个属性站点,其中父项是开发,子项是开发中的图。
在开发页面上,我使用以下代码显示该开发的所有子页面(绘图页面)。
<?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 :(得分: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}}