LoginSignup
9
9

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-12-12

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

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

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

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

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

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

などなど。

これらは 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 を使用するとエスケープ漏れもチェックしてくれますので、プラグインやテーマのセキュリティ向上にも役に立ちます。

9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9