WordPress functions.phpを関数ごとに分割して管理しやすくする話

現在はWordPressを使用してのWebサイト制作の需要が高く、小~中規模のコーポレートサイトをWordPressのオリジナルテーマでCMS化するといった案件が多くあります。

僕が得意なのはこの分野で、何十件ものサイトのWordPressオリジナルテーマを作ってきました。

その中で、やはりだいたいどのサイトでも使うコードというものが存在していて、これを毎回「あれ、どうすんだっけ…」と調べて書くのは非常に効率が悪いしめんどくさいです。

そんなときは、テンプレート内やfunctions.phpに全てのコードを書くのではなく、関数を作って関数ごとにphpファイルを作って管理することで、以降同じような処理を書くときにぐっと時間が短くなります。

今回は、僕が普段行っているファイルの管理方法を紹介します。




テーマの雛形を作る

プログラミングの時短のコツは、なんといっても「最低限必要なソースがあらかじめ用意されている」ということが基本になります。

bootstrapやLaravelなどのフレームワークと呼ばれるものも原理は同じです。ただ、これらは「人様が用意してくれたフレームワーク」なので、学習に時間がかかる、拡張しづらい、自由が利かないなどのデメリットがあります。

ただ、チームでの開発のときに、マニュアルが用意されているため自分以外の人が全く何を書いてあるかわからないといった状況にならないため、主に大規模な開発を行ったり、デザインの段階からフレームワークを用いることを前提としているのであれば非常に便利ですが、逆に小規模だけどデザイン性を重視していて、小回りが利いたほうがいいという状態のときは使いづらいです。

そこで、「人様が作ったフレームワーク」ではなく、「自分のために、自分で作る、自分のためのフレームワーク」を作っていこうぜというわけです。

拡張性に優れている雛形ができれば、サイトを作れば作るほどどんどん使い勝手がよくなっていきます。最初は数時間かかっていた作業も、雛形があれば数分で終わります

WordPressテーマの雛形の例

ここで僕の雛形をざっと紹介します。

こんな感じ。

themeというフォルダ内にテーマファイルを保管していて、WordPressサイトを作るときはこのthemeフォルダごとコピペしてフォルダ名を変更、あとはstyle.cssの中のテーマ名を変更すればテーマの基本は完成。あっというまですね。

custumizerフォルダはテーマカスタマイザーという機能を使うのに必要なソース、
tplフォルダは、各ページ共通で読み込まれるテンプレート(ナビとか)
functionsフォルダはfunctions.phpに書くところの関数を、関数ごとにファイルにして分けてます。

functions



なんでfunctions.phpを分ける必要があるの?

ひとえに、管理、拡張のしやすさが理由です。

例えば、title.phpとcategory_list.phpの中身を見てみましょう。

各関数については以下の記事で紹介しています。

WordPressのテーマ制作のとき、レイアウトが崩れるのを防ぐためにタイトルの文字数を制限してやる必要がある、という場合。 タイトル...
WordPressの記事を書いて、例えばカテゴリーを複数選択したとき(ニュース、日常)、記事の詳細ページとかに、選択したカテゴリーの一覧がい...

関数ごとにファイルを分け、それぞれの関数にドキュメントで説明を加えています。ドキュメントはWordPressの規約にのっとっているつもりですが、もしできてなかったらごめんなさい。

今のとこ紹介したのは2つですが、これが10個とか20個になったらfunctions.phpどうなると思いますか?どこに何が書いてあるか探すのも時間かかるし、拡張するのも大変になってきます。

関数ごとにファイルを分けてやることで、拡張したいときは各ファイルを触ればいいし、関数を追加したいときはファイルを追加すればいいだけです。シンプルでわかりやすいですね。

ちなみにこのブログ書いてて思ったんですが、関数の名前とファイル名を一緒にしたほうがもっとわかりやすいですよね。まだまだ修行が足りてませんでした

functions.phpの書き方

functions.phpの中身は非常にシンプル。

こんな感じで、各phpファイルをget_template_part();という関数を使って呼び出し、使わない関数はコメントアウトしているだけ。

get_template_part();については公式Codexをどうぞ。

おわり

今回は、WordPressテーマ開発の効率化のため、テーマの雛形作りとfunctions.phpの分け方について紹介しました。

雛形を作るときは苦労するんですが、慣れれば拡張もさくさくいけるようになるし、自分で自分のためになるツールを育てるというのはすごく楽しいです。

同じような作業を繰り返し行う場合は、その作業をいかに短縮するかというのは我々エンジニアの重要なテーマです。

それでは、良いエンジニアライフを。

イチオシ!書籍

シェアしてくだちい

フォローしてくだちい