WordPress:ページネーション設置箇所に1ページ目のみ別コンテンツを表示させる方法

WordPress:ページネーション設置箇所に1ページ目のみ別コンテンツを表示させる方法

WordPressでページネーション設置箇所に1ページ目のみ異なるコンテンツを表示させる方法です。
具体的な使用例としては、ブログやメディアなどでよく見かける1ページ目のみ「もっと見る」とか「さらに表示」のような2ページ目に飛ぶリンクが設定されたボタンを表示して、2ページ目以降は通常のページネーションを表示させるなどができます。

1ページ目と2ページ目以降とで処理を分ける

1ページ目と2ページ目以降とで処理を分ける実装には、is_paged()を使用して下記のように記述します。

PHP

if ( is_paged() ) {
  the_posts_pagination();
} else {
  // 1ページ目での処理
}

is_paged()を使って2ページ目以降かどうかを判定して、2ページ目以降だった場合はページネーションを表示させたいのでtrue時にthe_posts_pagination()を記述し、false時は2ページ目以降ではなく1ページ目ということになるので、ここにページネーションではないコンテンツを出力させるコードを記述することで、1ページ目と2ページ目以降とで異なる表示にすることができます。
よくある「もっと見る」ボタンを表示させるのであれば、コメント部分をecho '<a href="#">もっと見る</a>';などに変更し、特にカスタマイズ等を行なっていなければ2ページ目は/page/2/が末尾につくURLになると思うので、hrefはそれを加えた指定先にすれば実装できます。

ちなみに、ページネーションの実装にプラグインを使用しており、有名なもので「WP-PageNavi」 を使用しているのであれば下記のように記述します。

PHP

if ( is_paged() ) {
  if ( function_exists( 'wp_pagenavi') ) {
    wp_pagenavi();
  }
} else {
  // 1ページ目での処理
}

1ページ目で処理を分ける

上で紹介した方法でとりあえず1ページ目と2ページ目以降とで異なる表示にすることはできますが、これだけだと1ページ目での処理が常に実行されることになり、例えばこの部分で「もっと見る」ボタンを表示させる処理を記述した場合、まだ投稿数が少なく2ページ目以降は作成されていない(存在していない)のにボタンが表示されるということになります。
「もっと見る」などのボタンを設置する場合、具体的な動きとしては1ページ目が表示されていて且つ2ページ目以降が存在するときにボタンを表示させるのがほとんどだと思うので、この動きを実装するためにさらにget_next_posts_link()という関数を用いて下記のように記述します。

PHP

if ( is_paged() ) {
  the_posts_pagination();
} else {
  if ( get_next_posts_link() ) {
    // 2ページ目以降が存在する1ページ目での処理 - ex:「もっと見る」ボタンを表示
    echo '<a href="#">もっと見る</a>';
  } else {
    // 2ページ目以降が存在しない1ページ目での処理 - ex: バナーを表示
    echo '<a href="#"><img src="banner.jpg"></a>';
  }
}

上記のように記述することで1ページ目であっても2ページ目以降が存在するかしないかで処理を分けることができます。
これによってこのサンプルコード内にあるように、2ページ目以降が存在するときの1ページ目では「もっと見る」ボタンを表示させて、2ページ目以降が存在しない1ページ目ではバナーを表示させるといった動きを実装することができます。

もし、2ページ目以降が存在しない1ページ目での処理は特に必要ない(何も表示させたくない)のであれば、条件をまとめて下記のようにシンプルな記述でも実装できます。

PHP

if ( ! is_paged() && get_next_posts_link() ) {
  // 2ページ目以降が存在する1ページ目での処理
} else {
  the_posts_pagination();
}

Close the search window,
please press close button or esc key.