0

wordpressのこの機能に出くわしました。ページ間を移動するためのリンクが表示されます。

ページがAの場合、次のページはBです

ページがBの場合、次のページはCで前のページはAです

ページが C の場合、前のページは B

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; }
}

ただし、C に到達すると、「次」のリンクは C のままです。また、ページが A の場合、「前」のリンクは A のままです。

A の場合は「前の」リンクが C になり、C の場合は「次の」リンクが A になるように変更するにはどうすればよいですか?

ありがとうございました。

4

1 に答える 1

0

私はこれを次のように書き直したいと思います、それはあなたが望むことをするはずです:

$last_item = end( $siblings );

$before = ( $ID-1 > 0 ) ? get_permalink( $siblings[$ID-1]->ID ) : get_permalink( $last_item->ID );
$after = ( $ID+1 < count( $siblings ) )  ? get_permalink( $siblings[$ID+1]->ID ) : $siblings[0]->ID;

$closest = array( 'before' => $before, 'after' => $after );

どこ ?三項演算子です。

于 2012-12-18T03:06:59.773 に答える