【WordPress】画面表示のエスケープ処理【セキュリティ対策】

WordPressエスケープ処理のサムネイル

3つのエスケープ処理、esc_url()、esc_url()、esc_attr()について使用例を紹介します。また、エスケープ処理の必要ないWordPress関数も合わせて紹介します。

目次

エスケープ処理の必要性

WordPressで使われている関数をechoで表示するときには、セキュリティ対策としてエスケープ処理をする必要があります。エスケープ処理を怠ると、悪質なプログラムの介入によりWEBサイトに被害が発生する恐れがあるからです。

エスケープ処理を必要としない関数

the_◯◯◯といった、冒頭がtheで始まる関数には既にエスケープ処理が組み込まれているため、新たにエスケープ処理を施す必要はありません。

たとえば、エスケープ処理が必要のない関数は下記のとおりです。

<?php the_title();?>   <!-- タイトルを表示 -->
<?php the_time('Y年n月j日') ?>   <!-- 投稿日を表示 -->
<?php the_post_thumbnail('medium'); ?>   <!-- サムネイルを表示 -->
<?php the_excerpt(); ?>   <!-- 抜粋を表示 -->
<?php the_content(); ?>   <!-- コンテンツを表示 -->
<?php the_permalink(); ?>   <!-- パーマリンクを表示 -->

しかし、the_◯◯◯と似た関数で、get_the_で始まる関数をechoで出力する時にはエスケープ処理が必要です。そもそも、get_the_で始まる関数をechoで出力したい場合には、echoを使わずに、上で紹介したthe_で始まる関数に置き換えて使って下さい

エスケープ処理の方法

esc_url()|URLの場合

下記のようにURLを出力したい場合には、「esc_url()」を使ってエスケープ処理します。

<a href="<?php echo esc_url(home_url('/')); ?>hoge/hogehoge" class="hoge">hoge</a>

使い方は、esc_url()の()の中に、URL関数をまるごと入れるイメージです。

esc_html()|文字列の場合

下記のように配列から文字列を表示させる場合などには、「esc_html()」を使って、エスケープ処理します。

echo esc_html($term->name);

使い方は、esc_html()の()の中に文字列を出力する関数を入れるイメージです。

esc_attr()|HTML属性の場合

下記のようにclass属性やatl属性などを出力したい場合には、「esc_attr()」を使ってエスケープ処理します。ただし、href属性やsrc属性など、URLに関する属性は最初に紹介したesc_url()を使うのが望ましいと言われています。

<div class="<?php echo esc_attr($catslug); ?>">

使い方は、esc_attr()の()の中に属性を出力する関数を入れるイメージです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

■清水WEB制作代表
■コーディング:WordPress(オリジナルテーマ制作等)・HTML・Sass・FLOCSS・JavaScript(jQuery)等
■集客力:YouTube/Instagram/ブログでそれぞれ登録者数16000人/フォロワー13000人/月間最大アクセス50000PVの集客実績があります
■文章作成:博士号所有、会社員時代は科学雑誌に寄稿していたので文章作成も得意です
■写真技術:Amazon Kindle出版で、写真集・撮影編集解説書を5冊好評発売中です

目次