使用functions.php浏览Wordpress兄弟页面

时间:2013-01-27 17:27:33

标签: wordpress navigation siblings

我正试图找到一种方法来通过我的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; } }

它几乎完美适合我的需要。唯一的问题是:

  1. 按字母顺序对它们进行排序,我需要按订单号
  2. 排序
  3. 我需要它循环(所以最后一页链接到第一页)而不仅仅是结束
  4. 它会自动显示“Previous of Next”,我想摆脱“of”
  5. 如果有人对三个问题中的任何一个有任何意见,我将不胜感激。我正在做一些修补自己,但我认为你们中的大多数人可能比我更好。那,并且我已经多次出现“500服务器错误”。

    由于

1 个答案:

答案 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参数以解决第一个请求