【WordPress】ページネーションのページ番号をゼロ埋め2桁にしたい

Web関連
Web関連

今回は誰が何と言おうと備忘録です。

 

表題の通り、WordPressのページネーションのページ番号をゼロ埋め(ゼロパディング)して2桁に揃える必要がありました。

こんなんさくっと調べりゃすぐ出来ると思ったのですが、みんなわざわざこんな事やらないのか、思いのほか情報がない・・・

しれっとGPT-4oに進化していたChatGPT先生とあーでもないこーでもないと相談しながら、以下のコードで実装できました。

(いわずもがなfunction.phpはバックアップを取っておいて下さいね)

 

 

function.php

// ページネーションのページ番号をゼロ埋め
function custom_pagination_zero_fill($link) {
	// リンク内のページ番号
	$link = preg_replace_callback('/<a[^>]*?class="page-numbers"[^>]*?>([0-9]+)<\/a>/', function($matches) {
		$page_num = str_pad($matches[1], 2, '0', STR_PAD_LEFT);
		return str_replace($matches[1], $page_num, $matches[0]);
	}, $link);
	// 現在のページ番号
	$link = preg_replace_callback('/<span[^>]*?class="page-numbers current"[^>]*?>([0-9]+)<\/span>/', function($matches) {
		$page_num = str_pad($matches[1], 2, '0', STR_PAD_LEFT);
		return str_replace($matches[1], $page_num, $matches[0]);
	}, $link);
	return $link;
}
add_filter('paginate_links_output', 'custom_pagination_zero_fill');

 

補足
  • 「class=”page-numbers”」の箇所は出力されるhtmlによって変わる場合があるので、適宜変更して下さい。
  • コードをご覧頂ければ分かる通り2桁までしか対応していません・・・100ページを超える場合はまたその時に考えます・・・

 

蛇足

アーカイブページのページネーションは「echo paginate_links」で出力しています。

ちなみに最初はページネーションを「the_posts_pagination」で出力して「paginate_links」フィルタを使っていたのですが、それだとなぜかうまく動きませんでした。

なぜかは分かりません。

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