Memorandum

普段の生活の覚え書き。主に技術録

【WordPress】Cocoonでのページネーション変更

このサイトのトップページの下部にページ番号のリンクがあります。

このページ番号のリンクがその上の「次のページ」のボタンの幅より短かったので、なんとなくデザイン的に不満でした。

なので今回はこのページ番号のリンクの省略表示の処理を変更して多くのページ番号を表示するようにします。

paginate_links

ページ番号リンクの生成を調べたところ、下記のページが参考になりました。

https://elearn.jp/wpman/function/paginate_links.html

上記によるとWordPressにはじめから用意されているファイル/wp-includes/general-template.phpにpaginate_linksというページ番号表示(ページネーションというらしいです)という機能で生成されているそうです。

早速上記のファイルを編集してmid_sizeの値を変更しました。 mid_sizeは自ページ除いて何ページ分のページリンクを表示するかを設定する値です。

デフォルトでは2ページ分の表示なので、現在の表示と同じでした。この値を5に変えて保存してページをリロードしたところ、表示は変わっていませんでした。

Cocoon-master

なぜ変わらないのか考えてみたところ、現在Cocoonのテーマを使用しているのでテーマ自体の設定が上書きされて、設定した値が反映されていないのではないかと思いました。

なので、サーバに接続してgreppaginate_linksの値をテーマで使っている箇所がないか探しました。

root@152bc757f38d:/var/www/html/wp-includes# grep paginate_links -rl /var/www/html/
/var/www/html/wp-content/themes/cocoon-master/tmp/pagination.php
/var/www/html/wp-content/themes/cocoon-master/pagination.php
/var/www/html/wp-includes/link-template.php
/var/www/html/wp-includes/general-template.php
/var/www/html/wp-admin/includes/deprecated.php
/var/www/html/wp-admin/includes/media.php
/var/www/html/wp-admin/includes/nav-menu.php
/var/www/html/wp-admin/css/list-tables.css
/var/www/html/wp-admin/css/list-tables-rtl.css

すると、予想通りcocoon-masterのテーマでpagination.phpのファイルがありました。 このままファイルを編集することもできますが、テーマ内のファイルなのでWordPressの設定から編集することもできます。 ダッシュボードから「外観」→「テーマの編集」を選び、「編集するテーマを選択」を「Cocoon」にして、pagination.phpを選択します。 (pagination.phpは2つありますが、tmp/pagination.phpを変更しました)

pagination.phpの中にmid_sizeの項目があるので、この値を変更しました。(とりあえず私は5に設定しました)

確認

値を変更・保存してトップページを確認すると、1~5のページ番号が表示されていました。 しかし、現在はまだ記事数が少ないので最大でも5ページ分しかありません。

きちんと設定した項目が反映されているか確認するために、1ページあたりの表示記事数を少なくしてページ数を増やしてみました。

ダッシュボードから「設定」→「表示設定」を選び、「1ページに表示する最大投稿数」がデフォルトで10になっているので、これより少ない値にすると総ページ数が増えます。

すると無事に設定されているページ数が表示され、それ以降は省略表示されていることが確認できました。

後記

実はこの編集を行うのに、直接phpファイルを設定する必要があると思い、前回vimの導入などをしたのですが、結果的にvimがなくても設定することができました。

今回は自分の環境なのでいいですが、実務ではソフトを導入できなかったりする場面もあるので、今使える方法で出来ないのか確認することも必要だと思いました。

※追記:今回の修正方法はCocoonの親テーマを変更するので、親テーマの更新を適用するたびにもとに戻ってしまいます。 修正箇所は少ないので楽なのですが、更新があるたびに修正する手間がかかってしまいます。

子テーマの修正でページネーションの変更を実現できればいいのですが、方法が不明なのでご教授頂ければ嬉しいです。