「WordPressプラグインを使うと、サイトが遅くなる」という話をよく聞きます。
したがって「functions.phpに書いた方が速くなる」と、私も誤解していました。
実際は、プラグインに書いても、functions.phpに書いても、同じコードならサイトのスピードも同じです。
functions.phpにコードを追加していくと、どこに何が書いてあるか、探しにくいことがあります。
そこでWordPressを使い始めた当初は、以下のように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プラグインを再インストールすれば、データベースは引き継がれます。
しかし、もう使わなくても、データは残ったままです。
これが「プラグインを使うと遅くなる」に繋がっています。
プラグインを削除したときに、データベースも削除してくれるプラグインであれば、何も問題ありません。
また、もともとデータベースに追加しないプラグインでは、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プラグインを使うと、サイトが遅くなる」というのは、誤解があります。
たくさんの人がそう信じて、プラグインを使わない方法を探したり、テーマの作者に機能を要望しています。
サイトのパフォーマンスが変わらないのであれば、無理にそうする必要はないかと思います!