当已经在子页面上时循环遍历子页面
Loop through child pages when already on a child page
我有一个房产网站,父级是开发项目,子级是开发项目中的地块。
在开发页面上,我使用以下代码显示该开发的所有子页面(绘图页面)。
<?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(); ?>
我想显示相同的内容(开发的所有子页面)但在子页面本身上。本质上我需要检查页面是否有父页面然后遍历子页面...
有什么想法吗?
您可以使用与上面完全相同的查询,只需稍作修改。在我继续之前请注意,如果您使用 WP_Query
,您应该使用 wp_reset_postdata()
,而不是 wp_reset_query()
。后者与 query_posts
一起使用,在任何情况下你都应该 never 使用
要获取 post 父级,您可以使用 $post->post_parent
。这将 return 当前页面父级的 ID。如果ID returns 0
,则表示这是一个顶级页面。因此,您还需要在查询 运行 之前检查 $post->post_parent
是否不是 0
,否则无论当前页面是否为顶级页面,您都会返回所有 post第
页
示例
<?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
之前但在 endwhile
之后使用 wp_reset_postdata()
我有一个房产网站,父级是开发项目,子级是开发项目中的地块。
在开发页面上,我使用以下代码显示该开发的所有子页面(绘图页面)。
<?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(); ?>
我想显示相同的内容(开发的所有子页面)但在子页面本身上。本质上我需要检查页面是否有父页面然后遍历子页面...
有什么想法吗?
您可以使用与上面完全相同的查询,只需稍作修改。在我继续之前请注意,如果您使用 WP_Query
,您应该使用 wp_reset_postdata()
,而不是 wp_reset_query()
。后者与 query_posts
一起使用,在任何情况下你都应该 never 使用
要获取 post 父级,您可以使用 $post->post_parent
。这将 return 当前页面父级的 ID。如果ID returns 0
,则表示这是一个顶级页面。因此,您还需要在查询 运行 之前检查 $post->post_parent
是否不是 0
,否则无论当前页面是否为顶级页面,您都会返回所有 post第
示例
<?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
之前但在 endwhile
wp_reset_postdata()