WordPressのカスタマイズやテーマファイル、プラグインの作り方などデータベース構造から詳しく解説します。

WordPressの”プラグイン”ってなんだろう?

2015.03.24

WordPressを利用している方は必ずと言っていいほど使用する”プラグイン”という機能。
管理画面のプラグインメニューからプラグインを検索して、ダウンロード、有効化してしまえば便利な機能がすぐに使える。
でも、あまりプラグインを入れすぎると良くないっていうし、遅くなるらしい。
それは一体何故でしょう?
今回はWordPressの”プラグイン”の正体と、その厄介な部分をご説明します。

プラグインはメインのPHPファイルとその他によって構成される

スクリーンショット 2015-03-24 10.02.30
こちらは投稿ページで直接記事内容を編集出来る人気プラグイン「Front-End-Editor」のファイル構成です。
メインとなるwp-front-end-editor.phpの中では

<?php
/*
Plugin Name: WordPress Front-end Editor
Plugin URI: http://wordpress.org/plugins/wp-front-end-editor/
Description: WordPress Front-end Editor
Author: Janneke Van Dorpe
Author URI: http://make.wordpress.org/ui/tag/front-end-editor/
Version: 1.0.0-beta1.2
Text Domain: wp-front-end-editor
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
*/

if ( class_exists( 'FEE' ) ) {
	return;
}

require_once( 'class-fee.php' );

new FEE;

とだけ記述されています。これによると、まずはじめのコメント部分がプラグインの説明文にあたる箇所です。
つづいて、同じ階層にあるclass-fee.phpというファイルを読み込んで、FEEクラスのインスタンスの生成をしているようですね。
プラグインが有効化されると、まずこのメインのファイルが読み込まれて実行されます。
Front-End-Editorでは有効化されると、まずこのwp-front-end-editor.phpが読み込まれて、その中でclass-fee.phpというファイルが読み込まれます。
そしてclass-fee.phpの中では「プラグインが有効化された瞬間」に行われる処理や、このプラグインに関するあらゆる機能が記述されていて、それらが必要なタイミングで呼び出されるように記述されている、という仕組みになっています。

特定の機能を目的として開発されたフリーウェア

プラグインとは、WordPressの機能拡張を目的として制作されたフリーウェアです。
有志によって開発され、公式にWordPress.orgで配布されています。
エンジニアはプラグインの開発によって金銭的な利益を得る事は基本的にはありませんが(一部有償の高機能プラグインも存在します)、自分の実力を示すいい機会となり、評判やより良い仕事を得るチャンスに繋がります。

メソッド名が被ると大変

プラグインを入れすぎると問題になることの1つに、メソッド名の重複があります。
WordPressの実行時に、同じメソッド名を持つメソッドが複数定義されていると、PHPのエラーでサイトが真っ白になってしまいます。
ssh接続をしてエラーログを確認、該当メソッドのメソッド名を書き換える、といった処置が出来る方は良いのですが、大抵の場合はパニックになってしまうでしょう。

停止しても、設定が残ってしまう場合がある

それから、プラグインによってはプラグイン停止時の処理がきちんと記述されていないものがあります。
一度設定したらそのまま設定が残ってしまうような箇所に対しては、「プラグインの停止」というイベントをフックする形でその設定を解除するよう記述すべきですが、中にはこれが抜けてしまっているプラグインもあるんです。
つまり、停止をしても設定は残ってしまうため他のプラグインと競合したり、余計な処理を引き続き実行するため実行速度が遅くなってしまうという事態が起こりえます。

簡単な機能は出来る限り自分で実装しよう

例えば「投稿ページで関連記事を5記事表示したい」といった要望であれば、わざわざプラグインを使わずとも、自分でfunctions.phpにコードを10行程度記述するだけで作成出来ます。
自分で記述していれば、たとえ何かトラブルが生じたとしても、自分で作ったものなので仕組みを理解しているはずです。
その為大事にはなりません。
なんでもかんでもプラグインに頼るのではなく、自分で機能を作成することにぜひチャレンジしてみてください。

関連記事

ページ上部へ戻る