我有以下函数列出一个页面的所有子页面。
function show_subpages() {
global $post;
$subpages = wp_list_pages( array(
\'echo\' =>0,
\'title_li\' =>\'\',
\'depth\' =>2,
\'link_before\' => \'— \',
\'child_of\' => ( $post->post_parent == 0 ? $post->ID : $post->post_parent)
));
if ( !empty($subpages) ) {
echo \'<ul id="subpages" class="wrapper">\';
echo $subpages;
echo \'</ul>\';
}
}
所以当我在
parent-page
我看到一个包含所有子页面的列表。如果我在
child-page
我看到了与父页面对应的所有子页面的相同列表。
— My Parent Page
— My Child Page Nr. 1
— My Child Page Nr. 2
— My Child Page Nr. 3
这几乎就是我想要的!我只需要添加一点,就是从子页面列表中删除我所在的“当前”页面。
想象一下我在My Child Page Nr. 2
我只想列出My Child Page Nr. 1
和My Child Page Nr. 3
但不是“2号”,因为我现在在这一个。
有没有办法添加这个?
提前谢谢你。
最合适的回答,由SO网友:Johannes Pille 整理而成
function show_subpages() {
global $post;
$subpages = wp_list_pages( array(
\'echo\' =>0,
\'title_li\' =>\'\',
\'depth\' =>2,
\'link_before\' => \'— \',
\'child_of\' => ( $post->post_parent == 0 ? $post->ID : $post->post_parent),
\'exclude\' => ( $post->post_parent == 0 ? \'\' : $post->ID)
));
if ( !empty($subpages) ) {
echo \'<ul id="subpages" class="wrapper">\';
echo $subpages;
echo \'</ul>\';
}
}
wp_list_pages
支持
exclude
参数在上面,我简单地添加了
\'exclude\' => ( $post->post_parent == 0 ? \'\' : $post->ID)
到参数数组
其工作方式类似于您已经在向
child_of
:
如果帖子没有父项,则我们将订阅
exclude
空字符串。如果它有一个,我们会给它提供当前的帖子ID。