web-dev-qa-db-ja.com

Get_next_post()でループを再開するにはどうすればいいですか?

私はget_next_post()を作る簡潔な方法を探しています
最後の投稿に到達したら、先頭に戻ります。
現在のところ、最終投稿に到達すると停止します。

これがコーデックスからの数行のコードです。
私が使っているものと似ている文脈のために:

    <?php $next_post = get_next_post();
    if (!empty( $next_post )): ?>
    <a href="<?php echo get_permalink( $next_post->ID ); ?>">
            <?php echo $next_post->post_title; ?>
    </a>
    <?php endif; ?>

http://codex.wordpress.org/Function_Reference/get_next_post

ご提案いただきありがとうございます。

1
Wilhelm

get_next_postは本当に「始まり」が何であるかを知りません。 get_next_postget_adjacent_postsを使用します。あなたが ソース を見れば、その関数がそれ自身の問い合わせを実行して次の(または前の)投稿を決定することがわかります現在の投稿に対する相対位置。リストをループしません。

「最初の」投稿を取得するには、最初の投稿を返すという条件を満たす、決定したパラメータに基づいて新しいクエリを実行する必要があります。このようなもの:

while (have_posts()) {
  the_post();
  the_title();
  $next_post = get_next_post();
  if (empty($next_post)) {
    echo 'empty'; 
    $args = array(
      'posts_per_page' => 1,
    );
    $first = new WP_Query($args);
    var_dump($first->post);
  }
  echo '<br>';
}

また、 "next"と "previous"はソート順に相対的で、 "next"は最も近い新しい投稿を意味します。通常のデフォルトのアーカイブループでは、リストの最初の投稿に「次の」投稿はありません。実際にprevious_post_linkを使いたいのではないかと思いますが、それは推測です。

1
s_ha_dum