テーマチェックプラグイン カスタマイズのヒント

head line

theme check プラグインとは

テーマチェックプラグインは、WordPressのテーマデベロッパー用のプラグインで、テーマが、問題のある作り方がされていないか、機械的にチェックするツールです。

WordPressのテーマは、公式ディレクトリだけでなく、インターネット上で様々な形で流通しています。
このようなテーマの中には、悪質なコードを埋め込んだものもあり テーマが使っても問題ないかどうかチェックするために、利用している人もいる模様です。

WordPressの公式テーマディレクトリにホストされるテーマは、テーマレビューガイドラインに適合する必要があり、お気に入りのテーマが、これらのガイドラインに準拠しているかどうかを、簡単に調べる事が出来ます。

機械的なチェックを行っているだけなので、このチェックに合格すると、公式テーマに合格できるといった完全なテストではありませんが(公式テーマの場合は、この検査に合格するとテーマレビューチームによる。実際にテーマを評価するプロセスがあります)簡単に品質チェックが出来るので利用されているようです。

このプラグインは、機能を拡張する事が出来るので、テーマ開発者は、独自の検査項目を追加して、より安全なテーマ開発のために利用しています。

今回は、このプラグインの機能拡張を行って、カスタムバリデーションを行う方法を紹介します。

地味ですがとても便利ですよ

テーマデベロッパーのための機能拡張

出来るだけすばやくテーマの中身を理解したい人にヒントとなるといいと思って書いてます

通常のテーマチェックプラグインの結果画面

theme_check_b

カスタマイズを行い追加の表示を行った結果画面

theme_check

カスタマイズ

do_action(),apply_filters()関数がテーマに存在していれば、それも結果に書き出すという事を行っています。

アクションフックとフィルタフックは、テーマのカスタマイズを行ううえで必須の機能です。

テーマをテストした時に、これらのフックも同時に表示できると、別に調べたりする手間隙がかからず便利です。

どのようにカスタマイズするのか?

以下のように、機能を拡張するプラグインを作成してセットしています

plugin-list

カスタマイズ用のプラグインの中身

ホルダ:theme-check-extend
ファイル:theme-check-extend.php
ファイル:custom-validate.php

theme-check-extend.php

<?php
/*
Plugin Name: Theme Check Extend
Plugin URI: http://www.tenman.info/
Description: private plugin
Version: 0.1	
Author: tenman
Author URI: http://www.tenman.info/
 */

function custom_new_themecheck_loadeder() {
 
 global $themechecks;
	include_once 'custom-validate.php';
}
 
add_action( 'themecheck_checks_loaded', 'custom_new_themecheck_loadeder' );

custom-validate.php

<?php
class check_the_hooks implements themecheck {
	protected $error= array();

	function check( $php_files, $css_files, $other_files ) {
		$ret= true;
		$checks= array(
'/(apply_filters).+/'=> __('add_filter() フィルタが使えます', 'thtmecheck' ),		
'/(do_action).+/'=> __('add_action() アクションが使えます', 'thtmecheck' ),		
);

		foreach ( $php_files as $php_key=> $phpfile ) {
			foreach ( $checks as $key=> $check ) {
				checkcount();
				if ( preg_match( $key, $phpfile, $matches ) ) {
					$filename= tc_filename( $php_key );
					$error= ltrim( $matches[1], '(' );
					$error= rtrim( $error, '(' );
					$grep= tc_grep( $error, $php_key );
					$this->error[]= sprintf(__('<span class="tc-lead tc-info">INFO</span>: <strong>%1$s</strong> was found in the file <strong>%2$s</strong> %3$s.%4$s', 'themecheck'), $error, $filename, $check, $grep ) ;
				}
			}
		}
		return $ret;
	}

	function getError() { return $this->error; }
}
$themechecks[]= new check_the_hooks;

[emulsion_relate_posts]