未经测试,但这应该可以:
首次使用get_pages
查找与当前页面具有相同父级的所有其他页面(或CPT)。然后查找“上一页”和“下一页”。
function wpse5422_the_page_siblings(){
$post_id = get_the_ID();
$parent_id = wp_get_post_parent_id($post_id);
$post_type = get_post_type($post_id);
$sibling_list = get_pages(array(
\'sort_column\'=>\'menu_order\',
\'sort_order\' =>\'asc\',
\'child_of\' =>$parent_id,
\'post_type\'=> $post_type
));
if( !$sibling_list || is_wp_error($sibling_list) )
return false;
$pages = array();
foreach ($sibling_list as $sibling ) {
$pages[] = $sibling->ID;
}
$current = array_search($post_id, $pages);
$prevID = isset($pages[$current-1]) ? $pages[$current-1] : false;
$nextID = isset($pages[$current+1]) ? $pages[$current+1] : false;
echo wpse5422_display_prev_next($prevID, $nextID);
}
上述函数必须在循环中使用-它接受当前页面(或任何层次文章类型),并根据菜单顺序查找上一个和下一个同级页面(即与当前页面相同的父页面)(可以更改为日期或标题)。
然后,它使用以下函数,该函数以两个ID作为参数,只负责生成输出:
function wpse5422_display_prev_next($prevID=false, $nextID=false){
if( empty($prevID) && empty($nextID) )
return false;
$html = \'<div class="navigation">\';
if( !empty($prevID) ){
$html .= \'<div class="alignleft">\';
$html .= \'<a href="\'.get_permalink($prevID).\'">Previous</a>\';
$html .= \'</div>\';
}
if( !empty($nextID) ){
$html .= \'<div class="alignright">\';
$html .= \'<a href="\'.get_permalink($nextID).\'">Next</a>\';
$html .= \'</div>\';
}
$html .= \'</div><!-- .navigation -->\';
return $html;
}
理想情况下,您应该从中创建一个插件。它将在功能中工作。php——但实际上,它不应该住在那里。
循环内的用法,是否要显示页面链接:wpse5422_the_page_siblings();
.