WordPressのテーマのカスタマイズ方法(コード、Tips、スニペット)は様々ありますが、よく見かけるのが「テーマの functions.php に以下のコードを記載」です(このブログでもそういった紹介をしています)。
ですが、本当にその方法でいいのでしょうか?
様々なコードを追加した結果、functions.php がすごい長文になって、可読性を損なっていませんか?
テーマの functions.php と プラグイン(自作を含む)とを比較して自分なりにベストな方法を考えてみました。
目次
functions.php と プラグインの違い
どちらも同じPHP言語で作成されています。
使えるWordPressのタグ、関数にも違いはありません。
プラグインには「標準プラグイン情報ヘッダー」というものを含まなければならなかったりしますが、詳しくはCodexを参照してください。
functions.php とプラグイン大きな違いは「テーマに依存するかしないか」です。
テーマの functions.php はテーマが有効化されなければ動作しませんが、プラグインは個別に有効化でき、一部を除き*1、テーマに依存しません。
*1:パンくずナビゲーションやページネーションなど、実装するには有効化した後テンプレートファイルにコードを書く必要があるプラグイン。
以前、このブログで紹介した「WordPressで投稿内に指定カテゴリーの記事を表示するショートコード」で例えると、このコードをテーマの functions.php に書いた場合は「そのテーマが有効化されている場合に限り」ショートコードが働き、記事一覧が表示されます。
しかし他のテーマに変えてしまった場合、投稿内に [showcatposts]
は残りますが、ショートコードが働かないため、そのまま表示されてしまいます。
何をプラグイン化するのか
前述のショートコードのように「テーマを変えても動作させたいもの」はプラグイン化した方がベストです。
「プラグイン」と聞くと敷居が高く感じるかもしれませんが、先のCodexを参照に「作法」さえ守れば、functions.php と同じように作ることが可能です。
また、以前Twitterで @wokamoto さんに教えてもらいました。
@gatespace_k @HissyNC よく使うスニペット集めてオレオレプラグイン作っちゃうのも良いですね。 http://t.co/zokcrz8C
— wokamoto (@wokamoto) May 24, 2012
こちらの記事を参考にすれば、よく使うコードを毎回テーマの functions.php に書かずにすみますし、functions.php の可読性も良くなると思います。機能毎にファイルを分ければ、後からコードも探しやすくなりますし、流用も簡単です。
まとめ
- テーマに依存するコードはテーマの functions.php
- テーマを変えても動作させたいコードはプラグイン化
- プラグイン化は難しいものではないし、スニペットを管理するプラグインを作ることもできる。
※今回は自分なりの解釈で書きましたので、プラグインに関する部分などで誤りがありましたらご指摘いただけると幸いです。