WordPressのプラグインは「使わない方が良い」という誤解

本当にプラグインは遅いですか? WordPress

WordPressプラグインを使うと、サイトが遅くなる」という話をよく聞きます。

したがって「functions.phpに書いた方が速くなる」と、私も誤解していました。

実際は、プラグインに書いても、functions.phpに書いても、同じコードならサイトのスピードも同じです。

functions.phpにコードを追加していくと、どこに何が書いてあるか、探しにくいことがあります。
そこでWordPressを使い始めた当初は、以下のようにfunctions.phpを管理していました。

functions.phpの管理方法

functions.phpのある場所に、フォルダを作成して、機能ごとにインクルードで分けています。
使わない機能は、コメントアウトします。

しかし、この方法は面倒で管理も大変です。
ケースバイケースですが、私は一部の機能をプラグインに移動させています。

  • プラグインとfunctions.php、それぞれのメリット
  • functions.phpからプラグインに移動するのは簡単にできる

プラグインでデータベースが無駄に増える

プラグインを使わずに」という記事は魅力的ですが、functions.phpに書くならプラグインに書いても同じです。

サイトのパフォーマンスが悪くなるケースは、独自にデータを保存するプラグインを使うことです。

例えば、All In One SEO PackというSEOプラグインがあります。

All In One SEO Packプラグインを起動すると、データベースに値が入ります。[※]
※wp_postmetaやwp_optionsなどのテーブルにデータが入っています。

All In One SEO Packのdescription

記事内のdescriptionがデータベースに保存されています。

このプラグインは、削除してもデータベースに残ったままになります。

プラグインを削除したときに、データベースも削除してくれるプラグインと、残ったままになるプラグインがあるのです。

データベースを削除しないプラグインが増え続けると、確かにサイトのパフォーマンスが悪くなります。

All In One SEO Packプラグインを再インストールすれば、データベースは引き継がれます。
しかし、もう使わなくても、データは残ったままです。

これが「プラグインを使うと遅くなる」に繋がっています。
プラグインを削除したときに、データベースも削除してくれるプラグインであれば、何も問題ありません。

また、もともとデータベースに追加しないプラグインでは、functions.phpに書くのと、サイトスピードは変わりません。
functions.phpに書く機能は、データベースに追加しないものが多いでしょう。

functions.phpに書くメリットとデメリット

functions.phpに書くメリットは、以下です。

  • テーマエディタで編集できる
    管理画面の外観テーマエディタでfunctions.phpを編集できます。
    FTPを使わずに、コードを追加・変更が手軽にできます。
    しかしCSSと違い、PHPの編集にはリスクがあります。結局、エラーを起こせばFTPを使うことになるでしょう。
  • テーマごとに管理できる
    子テーマのfunctions.phpに書けば、テーマごとに機能を管理できます。
    特定のテーマでしか使えないfunctionであれば、子テーマに書いた方が良いでしょう。

一方でデメリットです。

  • 機能ごとの管理が大変
    コード内にコメントを書くにしても、コードを探すのが大変です。
  • テーマを変えると面倒
    テーマを変えるときは、functions.phpの中身を移行する必要があります。

プラグインに書くメリットとデメリット

プラグインに書くメリットは、以下です。

  • 機能ごとの管理が簡単
  • プラグインの画面で、機能の説明が読める
    プラグインごとに説明文が書けるので、管理がしやすくなります。
  • 画像やcssをプラグインのフォルダごとに管理できる
    プラグイン専用の画像は、プラグインフォルダの中に入れておくと、管理しやすくなります。

プラグインに書くデメリットは、プラグイン画面が多くなりすぎることでしょう。

また、同名の公式プラグインが世の中に存在すると、アップデートに巻き込まれます。
必ず、誰とも被らないプラグイン名を付けてください。

使い分けることが必要

特定のテーマ専用の機能であれば、functions.phpに書いた方が良いかもしれません。

私はWordPressのログインURLを変更する機能は、プラグイン化しています。
テストサーバーでは、wp-login.phpでログインした方がラクだからです。

一方で、テーマを渡って使う機能であれば、プラグイン化した方がラクですね。

functions.phpからプラグイン化する方法

functions.phpからプラグイン化するのは、非常に簡単です。

WordPressのpluginsフォルダに、phpファイルをアップして、コメントアウトで以下のように書くだけです。

<?php
/*
Plugin Name: test-plugins
*/

//ここにfunctions.phpの内容を書く

たったこれだけで、プラグイン画面に出てきます。

プラグインのテスト

説明文ぐらいは付けましょう。

ただし、これだと説明文がないので、何の機能か分かりません。
せめてDescriptionとバージョンを記載しましょう。
一般的な書き方は、以下のようになります。

<?php
/*
Plugin Name: tkama_heading-add-link-id
Plugin URI: https://tanakama.jp/wordpress/plugin/heading-add-link-id.html
Description: 見出しにページ内リンク用のidを追加するプラグイン
Version: 1.0.1
Author:tanakama
Author URI: https://tanakama.jp
License: GPLv2
Text Domain: tkama_heading-add-link-id
*/

//ここにfunctions.phpの内容を書く

同名の公式プラグインが世の中に存在すると、アップデートに巻き込まれるので、
Version:99
とかにすれば、別のプラグインに上書きされることもありません。
でも基本的には、世界中のプラグインと被らない名前を付けてください。

とても簡単なので、functions.phpの管理が大変な人は、試してみると良いでしょう。

結局「WordPressプラグインを使うと、サイトが遅くなる」というのは、誤解があります。
たくさんの人がそう信じて、プラグインを使わない方法を探したり、テーマの作者に機能を要望しています。

サイトのパフォーマンスが変わらないのであれば、無理にそうする必要はないかと思います!

コメント