WordPressで構築されたWebサイトの運用を辛くなりにくいようにする方針(1)
尖ったエンジニアには嫌われることが多いWordPressですが、エンドユーザがコンテンツをメンテナンスするWebサイトを構築する場合には、今でも合理的な選択肢になります。しかし、WordPressのサイトをカスタマイズして運用している場合に新たに修正を行なおうとすると、テーマのfunctions.php
が肥大化していて、読むのが難しく、修正するのが怖いと思うような経験をした人も居るのではないでしょうか?これがWordPressが嫌われる原因のうちの一つになっているのではないかと思います。
Webサイトに要求された独自機能を実装する方針として、以下のような形になることが多いと思います。
- テーマを一から作成する。テーマの
functions.php
にPHPのコードを書いて機能を追加していく。 - 公開されているテーマからベースにするテーマを選び、その子テーマの
functions.php
にPHPのコードを書いて機能を追加していく。
どちらにしても、PHPのコードを書くことで機能を拡張することを繰替えしていくと、functions.php
の行数がどんどん増えていき見通しの悪いコードになり、変更するのが怖くなりがちです。
WordPressで構築されたWebサイトの運用を辛くなりにくくする方針
辛くなるfunctions.php
の肥大化を防ぐ方法について書いてみます。
公開されているプラグインの利用
自分で機能追加しようとする前に、実現したい要件に適したプラグインがあれば、それを使うのが、functions.php
の肥大化防止に貢献します。ただ、目的のプラグインが高機能すぎる場合は、注意する必要があります。
本当に欲しい機能と同等の機能だけを提供するプラグインが見付かることが理想的です。しかし、多機能すぎるプラグインの一部分を使いたいような場合は、一度踏み留まって考えた方がいいかもしれません。使っていない機能が自動的に有効になることによりパフォーマンスの問題が発生したり、別のプラグインに悪影響を与える懸念があります。「All in One」という名前が付いているプラグインは機能が多すぎる傾向があります。利用したい機能が十分小さい場合は、自分で実装した方が理に適っている場合もあります。
functions.php
を、分割する
functions.php
が複雑化してしまうことの対応策としてファイルを適切に分割すれば、ある程度効果はあると思います。とは言え、テーマにPHPのコードが多くなることは混乱する可能性が高まるという意味では、複雑化の懸念は残ります。単純にファイルを分割して、required_once
で読み込むようにしただけだと、PHPで許される参照は全て可能になるため、ファイルは分割されていても処理としては密結合になる懸念もあります。
自作プラグインで目的の機能を実装する
それでも独自機能をPHPで実装する必要がある場合、ローカルプラグインを作成するという方法があります。通常、プラグインを作るというと、別のサイトでも機能を利用してもらうために、プラグインを作成して公開するということを想像するかもしれません。しかしここで提案しているのは、テーマとは疎結合なロジックをプラグインとして作成することで、安全にテーマのfunctions.php
の肥大化を防ぐための手法としてのプラグイン作成です。
投稿や固定ページの特定の箇所などから、作成したプラグインの機能を呼び出す必要がある場合、プラグインの提供するショートコードを経由して呼び出すようにします。このようにすることで、テーマとプラグインの疎結合状態を維持できます。疎結合の関係であれば、テーマのfunctions.php
の肥大化には無関係となることが可能です。
続く
次回は、機能追加をプラグインの追加により実現する方法の例を使って説明する予定です。