お問い合わせはコチラから

WordPressの改ページをPHP経由で挿入するカスタマイズ

サイト運営

WordPressはアーカイブをページネーションしたり、投稿や固定ページが長文になった時に改ページを入れてページ分割することができます。

アーカイブのページネーションはいじることはあまりないと思いますが、投稿や固定ページで自動的に改ページを入れられたらと思うことは多いと思います。

この記事では、Wordpressの記事をPHP経由で改ページを挿入するカスタマイズをご紹介します。

あまり見かけない内容なので、もしかしたら探している人の参考になるかもしれません。

WordPressのページネーションが使われる場面は3通りある

WordPressのページネーションは、カテゴリアーカイブなどのページでは普通に表示されるものです。この処理はメインループになります。

WordPressには記事内の改ページ機能があり、改ページがある場合、記事がページ分割されてページネーションが表示されます。

通常の場面では出てきませんが、固定ページなどでサブループでページネーションを表示させる場面もあります。

まとめると、Wordpressのページネーションは一つのページが複数のページに分割されて表示される場合に必要で、以下の2つの場合に表示されます。

  • WordPressにあらかじめ用意されている機能で実現
    • アーカイブページ等の記事一覧(メインループ処理)のページネーション
    • 記事内の改ページによるページネーション
  • プラグインを使って実現
    • サブループによるページネーション(wp-pagenaviプラグインを使用)

この記事では、記事内の改ページを使ったページネーションを対象にします。

wordpressの改ページはどうやって実現しているのか?

原理的な部分は完全に追い切れていないのですが、Frontendとしては投稿内に<!–nextpage–>があればよく、Wordpressは記事を読みだしたときに改ページがあるものとして処置します。

ポイントは、『記事を読みだしたとき』という部分です。

実は、記事を読みだした後で改ページを追加してもうまく処理されません。

読みだす直前に追加しなければいけません。

でも、DBを書き換えるわけにもいきませんので、ここで悩む人が多いと思います。

検索すると見つかる記事は・・・

私はタームの一覧を出力する固定ページにページネーションを付けたいと思って、それらしい記事を検索した時に見つかったのが以下の記事でした。

この記事の通りに行うとページネーションが表示されるのですが、リンク先が1ページ目の表示になってしまいました。

つまり1ページ目以外表示できない。

処理上は分割もされていて、ページネーションも出力されるんだけど、リンク先が表示できない。

以前は動いたのかもしれませんが、2024年では動かないコードです。

また、テンプレート直書きなので、専用の固定ページテンプレートを作らないといけないのも避けたいです。

[WordPress] 固定ページでタグ(カテゴリー、ターム)一覧を出してかつページ送りも実装 - Qiita
やりたいことタグ(カテゴリー、ターム)一覧を表示したい数が多くなったらページ送りしたい。WordPressは自動でタグ(カテゴリー、ターム)一覧のページを生成しないのでよしなにやる必要がありま…

改ページを追加する処理は、the_postsフィルターを使うと上手くいく

改ページの処理を実際に行うのは、setup_postdata()です。

この処理で読みだされる前に改ページを追加する必要があります。

参考記事の内容は正しいのですが、自前でsetup_postdata()を呼び出しているので、Wordpressに上手く認識されないのかもしれないので、別の方法を考える必要がありました。

setup_postdata()が読みだす前にフックで書き換えてあげる必要があります。

具体的には、the_postsフィルターフックを使います。

add_filter( 'the_posts', function( $posts ){
	if( ! is_admin() && (
		is_page('xx')||
		is_page('yy')||
		is_page('zz')
	)
	  ){
		$posts=array_map('add_page_break',$posts);
	}
	return $posts;
},999);
function gen_termlist($post){
// $post_contentに改ページを追加する
		$post->post_content = $html;
return $post;
}

まとめ

あまり使われた例を見かけないのですが、the_postsフィルターフックを使うと、後から改ページを追加しても、ページネーションが正しく動作するようになります。

この記事を書いた人
ブーン

はるばる日本よりオランダ王国へやってまいりました。
自分の経験が少しでも参考になれば嬉しいです。
お問い合わせは、『こちら』からお願い致します。

\ブーンをフォロー/
スポンサーリンク
サイト運営
\シェアお願いします!/
\ブーンをフォロー/
こんな記事も読まれています

失敗しないレンタルサーバーランキング

mixhost

不正アクセスに強くて使いやすいおススメサーバー
\本サイトで利用中/
メリット①:自動ウィルス駆除対応
メリット②:サイトの表示速度が速い!
メリット③:転送量の上限が多い!
メリット④:自由にプラン変更ができ、アクセス増にも対応できる!
メリット⑤:バックアップデータが無料で復元できる!
メリット⑥:Wordpressが簡単にインストールできる!
メリット⑦:どのプランでも初期費用が無料!
メリット⑧:10日間の無料お試し期間と30日の返金保証!

Conoha Wing

国内Wordpress最速の最強サーバー
メリット①:圧倒的な表示速度
メリット②:レンタルサーバーと独自ドメインがセットでお得◎
メリット③:プラン変更はすべてのプランで自由自在
メリット④:一か月の利用転送量の制限が緩い(9TB~)
メリット⑤:WordPresサイトの移行が簡単

エックスサーバー

国内シェアNo1の安定性と実績が魅力。ALL SSDで死角なしの万能サーバー。
メリット①:サイトの表示速度が安定して速い!
メリット②:アクセス負荷に強くて安定性が高い!
メリット③:24時間365日の充実サポートで安心!電話サポートもあり!
メリット④:転送量が多い!
メリット⑤:自動バックアップ機能付き!
メリット⑥:WordPressが簡単にインストールできる!
メリット⑦:10日の無料お試し期間がある!

タイトルとURLをコピーしました