Wordpressで共通の仕様の設定ができるのがこのファイル。
MVCモデルが分かる人に向けると、WordpressにはM(モデル)C(コントローラー)がfunctions.phpの1つのファイルでしか設定できない。(モデルが設定出来るか微妙なところではあるが...)
テンプレートで見た目を入れ替えられる仕様は、フレームワークとしては良いアイディアだと思う。
しかし、functions.phpもテンプレートの中に入っており、カスタム投稿やカスタムフィールドなどのモデルが絡む要素を必要とする場合、事実上1つのテンプレートでしか使えない。
「子テーマを使えばいい」と思われるが、ガッチガチに固められたフレームワークに当たった場合、どこで表示されているか探すのも一苦労。変えられるのはCSSと固定ページ追加程度だと思っていいだろう。
以前記事を書いた通り、Wordpressは独特な使い方をしており、なかなか曲者である。
それでもWordpressを使わなくちゃいけない場合、どんなfunctions.phpが使いやすいかを考えてみた。
前提
既存のテンプレートを作るのではなく、PHPベースでオリジナルのテンプレートを作る
functions.phpにはrequire_once()しか書かない
なぜなら、パーツ管理がしやすいから。
require_onceを大量に使うと重くなるかな...と懸念しているが、そこは案が欲しいところ。
機能ごとにまとめる
例えば、ライター機能削除の設定を1ファイルにまとめておく。
コメント停止はもちろん、管理画面のコメント枠削除をまとめて1つのファイルに設定しておく。
ライター機能が急に必要になった場合、該当ファイルを読み込む1文をコメントアウトすれば、すぐに機能復活ができる。
もし、管理画面の表示だけ復活させたいとした場合、そのファイルを確認すればすぐに見つかる。
コメントを超丁寧に書く
初めて触った人でも把握しやすいようにすることは大事なこと。
コメントを書くときに重要なのは、ファイル内を日本語でテキスト検索したときに引っかかるようにすること。
そうすれば、自分以外の人が修正必要な場合、すぐに該当ファイルを見つけることが出来る。
functions.phpは索引ファイルとして使えるように意識したい。
require_once()をした先でrequire,includeを使わない
ファイルを辿った先に別のファイルを辿る事になると、どのファイルに書いてあるかがコメントだけでは辿りにくくなる。
それならファイルを細かく分割して、function.phpを見やすくした方が使いやすいと思う。
get_template_part()を使わない。
get_template_partでファイルを読み込むのの良いところは、子テーマの管理がしやすいところ。
includeやrequireと違い、ファイル外の変数(global変数含)を再度設定する必要があり、ファイルを細かく分割しにくくなってしまい、効率が悪い。
テンプレートのみで売ることを考えていないなら、なるべく使わない方が扱いやすいように思う。
まとめ
Wordpressに慣れている人も、初心者も分かりやすい仕様を考えたつもり。
具体的な関数は、また別記事にまとめようと思う。