paginate_linksで「All output should be run through an escaping function」が出る問題

WordPress関連記事
目次

phpcsが出す paginate_linksのエラーを直したい。

WordPressのテーマでページネーションを作っているときに、phpcsにこんなエラーを指摘されました。

All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found 'paginate_links'.

上を日本語訳すると…

すべての出力は、エスケープ関数(WordPress Developer HandbooksのSecurityセクションを参照)を通して実行する必要があり、'paginate_links'を見つけます。

要するにエスケープ処理をしないといけないです。

とはいえ、「paginate_links」はHTMLタグを出力するので、esc_htmlやesc_urlは使えません…

どうエスケープしろと..😅
何時間もあれこれ調べてやっと解決したので忘備録で書いておきます。

paginate_linksのエスケープ方法

「wp_kses_post」というエスケープ関数を使います。
コピペして好きにカスタマイズしてください。

		<?php
		if ( $wp_query->max_num_pages > 1 ) : // ここからページネーション
			echo '<div class="p-archive-pager">';
			// paginate_linksをエスケープ処理
			echo wp_kses_post(
				paginate_links(
					array(
						'base'      => get_pagenum_link( 1 ) . '%_%',
						'format'    => '?paged=%#%',
						'current'   => max( 1, $paged ),
						'total'     => $wp_query->max_num_pages,
						'prev_text' => '',
						'next_text' => '',
					)
				)
			);
			echo '</div>';
		  endif;
		?>

wp_kses_post とは

投稿コンテンツに対して許可された HTML タグに基づいて、与えられたコンテンツをサニタイズ(無害化)します。

https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/wp_kses_post

「wp_kses_post」はHTMLタグを無害化してくれるようです。
なので、HTMLタグを出力したい場合はこれでエスケープ処理をするのが良いですね。

こちらの参考サイトが役に立ちました!助かった!

GitHub
paginate_links should be run through an escaping function · Issue #1813 · WordPress/WordPress-Coding... Shouldn't WordPress functions be escaped already when they are being used? What's the correct escaping function to be used with paginate_links? (I can't use esc...
WordPress関連記事

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
目次