我正试图找到一种方法来通过我的wordpress托管网站浏览兄弟页面。经过一些搜索后,我发现this要放入我的functions.php:
function siblings($link) {
global $post;
$siblings = get_pages('child_of='.$post->post_parent.'&parent='.$post->post_parent);
foreach ($siblings as $key=>$sibling){
if ($post->ID == $sibling->ID){
$ID = $key;
}
}
$closest = array('before'=>get_permalink($siblings[$ID-1]->ID),'after'=>get_permalink($siblings[$ID+1]->ID));
if ($link == 'before' || $link == 'after') { echo $closest[$link]; } else { return $closest; } }
它几乎完美适合我的需要。唯一的问题是:
如果有人对三个问题中的任何一个有任何意见,我将不胜感激。我正在做一些修补自己,但我认为你们中的大多数人可能比我更好。那,并且我已经多次出现“500服务器错误”。
由于
答案 0 :(得分:3)
这是您修改过的代码段。它解决了你的前两个请求。最后一个不是提供的代码的一部分。此代码不会生成任何精神词。它只回应或返回永久链接。
function siblings($link) {
global $post;
$siblings = get_pages('child_of='.$post->post_parent.'&parent='.$post->post_parent.'&sort_column=menu_order');
foreach ($siblings as $key=>$sibling){
if ($post->ID == $sibling->ID){
$ID = $key;
}
}
if( $ID == 0 ){
$closest = array('before'=>get_permalink($siblings[count($siblings)-1]->ID),'after'=>get_permalink($siblings[$ID+1]->ID));
}elseif( $ID == count($siblings)-1 ){
$closest = array('before'=>get_permalink($siblings[$ID-1]->ID),'after'=>get_permalink($siblings[0]->ID));
}else{
$closest = array('before'=>get_permalink($siblings[$ID-1]->ID),'after'=>get_permalink($siblings[$ID+1]->ID));
}
if ($link == 'before' || $link == 'after') { echo $closest[$link]; } else { return $closest; } }
编辑:将& sort_column = menu_order 添加到get_pages参数以解决第一个请求