我使用foreach循环列出父页面上的子页面,效果很好。但是,子页面不会在子页面上列出,这是我喜欢的。
到目前为止,对于父页面有效:
<?php
$nav = array(
'post_type' => 'page',
'orderby' => 'title',
'order' => 'ASC',
'post_parent' => $post->ID
);
$child_pages = get_posts($nav);
?>
<ul>
<?php foreach ($child_pages as $child_page) : ?>
<li>
<a href="<?=get_permalink($child_page->ID); ?>"><?=$child_page->post_title; ?></a>
</li>
<?php endforeach; ?>
</ul>
理想情况下,我希望继续使用foreach而不是任何其他循环。我想知道是否需要在现有循环中添加另一个循环,但我不确定如何继续。
非常感谢任何帮助。
答案 0 :(得分:1)
使用parent而不是post_parent
<?php
$nav = array(
'post_type' => 'page',
'orderby' => 'title',
'order' => 'ASC',
'child_of' => $post->ID
);
$child_pages = get_posts($nav);
?>
<ul>
<?php foreach ($child_pages as $child_page) : ?>
<li>
<a href="<?=get_permalink($child_page->ID); ?>"><?=$child_page->post_title; ?></a>
</li>
<?php endforeach; ?>
</ul>
希望有所帮助
答案 1 :(得分:1)
你可以在这里做的是使用 wp_get_post_parent_id 检查当前页面是否是子页面 - 请参阅http://codex.wordpress.org/Function_Reference/wp_get_post_parent_id然后如果页面是子页面 - 请使用父ID,否则只使用帖子ID。这样的事情应该有效:
global $post;
if(wp_get_post_parent_id( $post->ID ))
{
$nav = array(
'post_type' => 'page',
'orderby' => 'title',
'order' => 'ASC',
'post_parent' => wp_get_post_parent_id( $post->ID )
);
}
else{
$nav = array(
'post_type' => 'page',
'orderby' => 'title',
'order' => 'ASC',
'post_parent' => $post->ID
);
}
$child_pages = get_posts($nav);