Help us understand the problem. What is going on with this article?

VCCW を使ってテーマやプラグインのコーディングスタンダードをチェック

More than 3 years have passed since last update.

昨日 「VCCW + WP-CLI で WordPress のユニットテスト」 という記事を書きました。

何回かに分けて、VCCW の少し高度な使い方について解説していきます。

WordPress のコーディングスタンダード

WordPress にはいくつかのコーディングスタンダードが定められています。

https://codex.wordpress.org/WordPress_Coding_Standards

主な規約はだいたい以下のような感じ。

  • インデントにはスペースではなく本物のタブを使用すること。
  • 丸括弧の内側にはスペース。
  • 変数を展開する等の理由がない限りシングルクォーテーションを使用すること。

などなど。

これらは WordPress-Coding-Standards というツールを使用すれば、皆さんのプラグインやテーマ内のコードをチェックすることができます。

https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards

VCCW にはこれがデフォルトでセットアップされていますので簡単にチェックを行うことができます。

wpcs コマンドを使ってコーディングスタンダードをチェックする

みなさんのテーマやプラグインが WordPress のコーディングスタンダードに準拠しているかをチェックするには、wpcs コマンドを使ってください。

まず、いつものとおりゲストマシンにログイン。

$ vagrant ssh

次にチェックしたいテーマやプラグインのディレクトリに移動してください。

$ cd /var/www/html/wp-content/plugins/oreore

最後にチェック。

$ wpcs *.php

サンプルに以下のようなまったく役に立たないプラグインを用意してみました。

<?php
/**
 * Plugin Name:     Oreore
 * Plugin URI:      PLUGIN SITE HERE
 * Description:     PLUGIN DESCRIPTION HERE
 * Author:          YOUR NAME HERE
 * Author URI:      YOUR SITE HERE
 * Text Domain:     oreore
 * Domain Path:     /languages
 * Version:         0.1.0
 *
 * @package         Oreore
 */

function hello( $str ) {
  echo $str;
}

これにチェックをかけると以下のような感じ。

$ wpcs *.php 

FILE: /var/www/html/wp-content/plugins/oreore/oreore.php
----------------------------------------------------------------------
FOUND 3 ERRORS AFFECTING 1 LINE
----------------------------------------------------------------------
 16 | ERROR | [x] Tabs must be used to indent lines; spaces are not
    |       |     allowed
 16 | ERROR | [x] Line indented incorrectly; expected at least 1
    |       |     tabs, found 0
 16 | ERROR | [ ] Expected next thing to be a escaping function, not
    |       |     '$str'
----------------------------------------------------------------------
PHPCBF CAN FIX THE 2 MARKED SNIFF VIOLATIONS AUTOMATICALLY
----------------------------------------------------------------------

Time: 37ms; Memory: 4Mb

インデントの方法に関するエラーが二つと、最後に Expected next thing to be a escaping function, not '$str' というエラーが出ていますね。

これは XSS脆弱性を防ぐためのエスケープが漏れていることを指摘しています。

これは以下のように WordPress のエスケープ関数を使用するとエラーがでなくなります。

<?php
/**
 * Plugin Name:     Oreore
 * Plugin URI:      PLUGIN SITE HERE
 * Description:     PLUGIN DESCRIPTION HERE
 * Author:          YOUR NAME HERE
 * Author URI:      YOUR SITE HERE
 * Text Domain:     oreore
 * Domain Path:     /languages
 * Version:         0.1.0
 *
 * @package         Oreore
 */

function hello( $str ) {
        echo esc_html( $str );
}

このように WordPress-Coding-Standards を使用するとエスケープ漏れもチェックしてくれますので、プラグインやテーマのセキュリティ向上にも役に立ちます。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした