目次
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...