https://gist.github.com/3853924
这是我创建的一个插件,通常用于此类功能。关键是文件底部的一个小函数,用于搜索顶级祖先。当你在博客或搜索页面上时,还有一部分代码可以打印出类别而不是页面;您可以通过注释掉第43行来关闭它。
它将显示任意多个级别的页面层次结构,并且始终显示顶级父页面级别。
您可以通过下载文件、将其添加到插件文件夹并激活来安装它。如果您想在代码中使用它,而不是在小部件区域中使用它,可以执行以下操作:
$nav = new DTW_Navigation_Widget;
$nav->widget();
小部件的相关部分如下:
// Somewhere in your functions file
/** Find the top-level parent of this post */
function my_get_ancestor_id($post) {
if ( $post->post_parent ) {
$ancestors = get_post_ancestors($post->ID);
$root = count($ancestors)-1;
$parent = get_post($ancestors[$root]);
} else {
$parent = $post;
}
return $parent->ID;
}
还有这个:
// Also in your functions file
/** Find the top-level parent of this post */
function related_pages() {
// Where are we?
global $post;
$parent_id = my_get_ancestor_id($post);
$title = get_the_title($parent_id);
$link = get_permalink($parent_id);
$title = "<a href=\'$link\' title=\'$title\'>$title</a>";
if ( !empty($parent_id) ) {
$args = array(
\'title_li\' => \'\',
\'child_of\' => $parent_id,
\'echo\' => 0,
\'sort_column\' => \'menu_order\'
);
$nav = wp_list_pages($args);
}
// Let\'s hide this if there aren\'t any sub-pages or sibling pages... it tends to break.
if ( !empty($nav) ) {
echo "<ul id=\\"sidebar-subnav\\">" . $nav . "</ul>";
}
}
然后,无论您想在哪里获得子页面/同级页面列表:
<?php related_pages(); ?>