時給単価UP【3大特典付き】
コーディングテクニック集100選⋙

【解説】WordPressのエスケープ処理方法3選【必要・不要な関数】

記事内に広告を含みます

パソ君
パソ君

・WordPressのエスケープ処理とは?

こんな疑問にお答えします。

WordPressのテーマを作成するとき、echo home_url()などでデータを出力しますよね。

出力するさいは、データを無害化してからするべきです。

そのまま出力してしまうと、不正操作が実行されるリスクが高まるため。

データを無害化するために行うのが、エスケープ処理です。

ジト
ジト

セキュリティを高めるためにエスケープ処理すべし!

WordPressでは、エスケープ処理を簡単に実装できる関数が提供されています。

ということで、この記事では「WordPressのエスケープ処理方法3選」について解説していきます!

この記事でわかること

・WordPressのエスケープ処理方法3選
・WordPressのエスケープ処理が必要な関数

【解説】WordPressのエスケープ処理方法3選

テーマ作成におけるWordPressのエスケープ処理は、主に3つ。

  1. エスケープ処理:URL
  2. エスケープ処理:文字
  3. エスケープ処理:HTML属性

順に見ていきましょう!

エスケープ処理:URL

1つ目がURLのエスケープ処理。

使う関数は「esc_url()」です。これは、URLをエスケープするためのWordPressの関数の1つ。

使用例は下記らのコードとなります。

<!-- TOPページへのリンク -->
<a href="<?php echo esc_url( home_url( '/' ) ); ?>">TOP</a>

<!-- Newsページへのリンク -->
<a href="<?php echo esc_url( home_url( '/news/' ) ); ?>">News</a>

<!-- 画像URLの指定 -->
<img src="<?php echo esc_url( get_template_directory_uri() . '/img/hoge.png' ); ?>" alt="">

エスケープ処理(esc_url()関数)が行われているため、生成されたURLは安全に出力されます!

URLが出力されるコードの場合は、esc_url()関数を使いましょう。

エスケープ処理:文字

2つ目が文字のエスケープ処理。

使う関数は「esc_html()」です。これは、文字の出力をエスケープするためのWordPressの関数の1つ。

HTMLの特殊文字があっても、無効化して文字列として表示してくれます。

使用例は下記らのコードとなります。

<?php echo esc_html( $category->cat_name ); ?>

<?php echo esc_html( $items->name ); ?>

文字が出力されるコードの場合は、esc_html()関数を使いましょう。

エスケープ処理:HTML属性

3つ目がHTML属性のエスケープ処理。

使う関数は「esc_attr()」です。これは、HTML属性の値を出力時にエスケープするためのWordPressの関数の1つ。

class,alt,data属性などですね。

使用例は下記らのコードとなります。

$class = 'example-class';
<div class="<?php echo esc_attr( $class ); ?>">テキスト</div>

HTML属性の値を出力するコードの場合は、esc_attr()関数を使いましょう。

【解説】WordPressのエスケープ処理が必要・不要なもの

エスケープ処理が大事といっても、テーマ作成時に全ての出力をエスケープ処理する必要はありません。

結論:必要なのはechoを使って出力している時になります。

つまりthe_title()などは、エスケープ処理が不要です。

ただgetを使って取得したあとに、echoにて出力する場合はエスケープ処理が必要となります。

下記みたいな感じですね。

<!-- エスケープ処理が不要 -->
<?php the_title();?>

<!-- エスケープ処理が必要 -->
<?php echo esc_html( get_the_title() );?>

WordPressのエスケープ処理が必要なものの例

エスケープ処理が必要な例としてはこんな感じ。

<!-- 記事のタイトルを表示する -->
<?php echo esc_html( get_the_title() ); ?>

<!-- 記事の抜粋を表示する -->
<?php echo esc_html( get_the_excerpt() ); ?>

<!-- 記事の投稿日を表示する -->
<?php echo esc_html( get_the_date() ); ?>

<!-- 記事の投稿者の名前を表示する -->
<?php echo esc_html( get_the_author() ); ?>

<!-- 記事が属するカテゴリーを表示する -->
<?php echo esc_html( get_the_category_list( ', ' ) ); ?>

<!-- 記事が属するタグを表示する -->
<?php echo esc_html( get_the_tag_list( '', ', ', '' ) ); ?>

<!-- 記事のパーマリンクを表示する -->
<?php echo esc_url( get_permalink() ); ?>

WordPressのエスケープ処理が不要なものの例

エスケープ処理が不要な例としてはこんな感じ。

<!-- 記事のタイトルを表示する -->
<?php the_title(); ?>

<!-- 記事の本文を表示する -->
<?php the_content(); ?>

<!-- 記事の抜粋を表示する -->
<?php the_excerpt(); ?>

<!-- 記事の投稿日を表示する -->
<?php the_date(); ?>

<!-- 記事の投稿者の名前を表示する -->
<?php the_author(); ?>

<!-- 記事が属するカテゴリーを表示する -->
<?php the_category(); ?>

<!-- 記事が属するタグを表示する -->
<?php the_tags(); ?>

<!-- 記事のパーマリンクを表示する -->
<?php the_permalink(); ?>

<!-- 記事のアイキャッチ画像を表示する -->
<?php the_post_thumbnail(); ?>

【解説】WordPressのエスケープ処理方法3選【必要・不要な関数】:まとめ

  • WordPressで出力のさいはエスケープ処理が必要
  • 全部の出力で必要なわけではない
  • echoを使う場合はエスケープ処理すべし
ジト
ジト

セキュリティを高めるためにエスケープ処理をしておこう!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA