我正在制作一个模板文件/循环来创建和归档当前页面子页面的页面。
这是我在下面的查询,但是它只是返回我的帖子,而不是子页面。
<?php
$parent = new WP_Query(array(
'post_parent' => $post->ID,
'order' => 'ASC',
'orderby' => 'menu_order',
'posts_per_page' => -1
));
if ($parent->have_posts()) : ?>
<?php while ($parent->have_posts()) : $parent->the_post(); ?>
<div id="parent-<?php the_ID(); ?>" class="parent-page">
<h1><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h1>
<p><?php the_advanced_excerpt(); ?></p>
</div>
<?php endwhile; ?>
<?php unset($parent); endif; wp_reset_postdata(); ?>
非常感谢您的帮助。
Josh
#1 楼
您必须将child_of
更改为post_parent
,并添加post_type => 'page'
:WordPress Codex Wp_query帖子和页面参数
<?php
$args = array(
'post_type' => 'page',
'posts_per_page' => -1,
'post_parent' => $post->ID,
'order' => 'ASC',
'orderby' => 'menu_order'
);
$parent = new WP_Query( $args );
if ( $parent->have_posts() ) : ?>
<?php while ( $parent->have_posts() ) : $parent->the_post(); ?>
<div id="parent-<?php the_ID(); ?>" class="parent-page">
<h1><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h1>
<p><?php the_advanced_excerpt(); ?></p>
</div>
<?php endwhile; ?>
<?php endif; wp_reset_postdata(); ?>
评论
谢谢花花公子,我尝试了post_parent原始,但关键是'post_type'=>'page'-WordPress的查询默认默认为发布吗?当它允许我时,我会接受答案。
– Joshc
2012年7月31日上午9:27
是的,默认为'post_type'=>'post'。
–mrwweb
19年3月26日在15:01
#2 楼
我知道这是一个非常老的问题,但是自从我着手解决这个问题后,其他问题也可能会出现。Wordpress有一个非常简单的列表页面解决方案,您还可以在其中添加一些参数。
这就是显示页面子级所需的全部:
wp_list_pages(array(
'child_of' => $post->ID,
'title_li' => ''
))
请参阅wp_list_pages的参考页,了解可以应用的所有选项。 br />
评论
这将返回HTML字符串,而不是post对象的列表,因此可能不是OP想要的。
–亚历山大·霍尔斯格罗夫(Alexander Holsgrove)
20/07/27在11:43
#3 楼
将其重写为functions.php中的函数,您需要添加global $ post;
function page_summary() {
global $post;
$args = array(
'post_type' => 'page',
'posts_per_page' => -1,
'post_parent' => $post->ID,
'order' => 'ASC',
'orderby' => 'menu_order'
);
$parent = new WP_Query( $args );
if ( $parent->have_posts() ) :
while ( $parent->have_posts() ) : $parent->the_post(); ?>
<div id="parent-<?php the_ID(); ?>" class="parent-page">
<h1><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h1>
</div>
<?php
endwhile;
endif;
wp_reset_postdata();
}
#4 楼
尽管OP专门要求使用wp_query
,但这也可以:get_pages('child_of='.$post->ID.'&sort_column=menu_order');
评论
尝试此解决方案==获取帖子的子项-wordpress.stackexchange.com/a/123143/42702