0

我正在尝试找到一种方法来浏览我的 wordpress 托管网站上的兄弟页面。经过一番搜索,我发现其放入我的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. 它会自动显示“Previous of Next”,我想去掉那个“of”

如果有人对这三个问题中的任何一个提出意见,我将不胜感激。我自己正在做一些修补,但我认为你们中的大多数人可能在这方面比我好很多。那个,我已经得到“500个服务器错误”的次数太多了。

谢谢

4

1 回答 1

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

于 2013-01-27T18:30:15.230 回答