阿修羅ワークス開発日誌 WordPress用オリジナルテーマを開発しています

ご無沙汰です。
現在、WordPress用オリジナルテーマを開発しています。
マッチングサイト用のデモサイトを作らなければならない関係で、自作のテーマを作っています。
収入ゼロのまま3週目に突入しました……。

実は3年前に一度オリジナルテーマを開発していたんだけれど途中で挫折してます。
テーマとテーマ用プラグインという構成で、プラグイン側でデザインをコントロールできるようにしていたんだけれど、やはりあらゆる要求には答えられない。
でもフルスクラッチはしたくない……。だってコストがかかるんだものだもの…ブツブツ。

しかし3年という月日が流れCSSフレームワークが洗練されたお陰で、開発がしやすくなりました。
FlexBoxとGrid Rayoutがどのブラウザでもサポートされ、IEが消えEdgeがChroniumベースとなりました。
やるなら今だ! ということでやっとるわけですが、テーマ開発ってみんなどうしてるんだろうという疑問の話がテーマです。

WordPressでテーマ開発をするにはまずテンプレートの役目を知ることから始まります。
テンプレートの役目はファイル名の命名規則で決まるので分かりやすいです。
例えば「home.php」はホーム(トップ)ページとして読み込まれます。

で、いざ開発すると問題になるのがカスタマイズ性をどう担保するのか? という問題です。
テンプレートに直書きするのもありなんですが、それだと変更する場合にはテンプレートファイルを直接編集する必要が出てきます。
素人にやらせるとまず間違いなくトラブルの元になるので、保守性を高めるために、管理画面から設定できるのが望ましいです。

しかし、管理画面から設定=プログラミングなので大変です。
WordPressでいうところのデザインの大半はプログラミング作業になるので開発工数が大幅アップします/(^o^)\オワター
例えば、文字色や背景色を変えたい場合はその変数を入力するフォームパーツが変数分必要となります。
小さなアプリを開発するようなものです。

さらにレイアウトが異なるウェブパーツを数多く用意しようとすると、小さなアプリをいくつも開発しなければならない…ということになります。
それに気が付いたのはウィジェットをいじっている時でしたね。

他のテーマでもそうだと思うんだけれど、各ページに表示するウェブパーツはWordPressのウィジェットという機能を使って実現されていることが多い。
よくあるのがサイドバーウィジェットにお好みのウィジェットをドラッグして表示するというやつ。

つまり、テンプレート内にウィジェットを表示するエリアを設けておけば、管理画面から表示するウィジェットはユーザー側の裁量で自由に選べるということになるんですね。めでたしめでたし。
……というわけには行かないのでした/(^o^)\オワター

ウィジェットを使うと分かるように、WordPressのウィジェットって必要最低限の機能しかないものが多い。
有り難いんだけれど、なにかがちょっぴり足りないか、大幅に足りない。

例えば「最近の投稿」というウィジェットは最近投稿された記事タイトルを表示できるんだけれど、ここに登録したアイキャッチを表示しようとするとできない。
タイトル横にアイキャッチ画像が表示されると直感的で分かりやすくなる。
でもやろうとするとそもそもそういう機能はない。
また、投稿タイプは「post」しか表示できない。

またデザインのコントロールもできない。やるならテンプレート側で受け持つしかない。
あるいはウィジェットだけがパッケージされたプラグインをインストールするしかない。

でも、結局の所、テンプレート側で受け持つと保守性に欠けるし、サードパーティのプラグインを使うと更新されなくなったり、外したりすると使えないという問題が生じる。そもそも使いたいウィジェットが存在するとは限らない。

WordPressで困るのは、クライアントからこうして欲しいという要望を叶えたくても、自分の守備範囲を超えたところにソリューションがあって詰む問題です。
他人が作ったテーマとかプラグインをリバースエンジニアリングして再構築するとか、工数大幅アップの極みです/(^o^)\オワター
やりたくはないし、そもそもできないというパターンも多い。
WordPress関連の修正案件もこの手のものが多い。

そんなわけでいろいろとよろしくやるためには、WP_Widgetクラスをエクステンドしてウィジェットを自作するしかない。
ウィジェットを自作すれば、デザインカンプからのコーディングの再現性が保守性を維持したまま高くなる。
自作なので自由度もめちゃくちゃ高い。
ただし実現したいレイアウト分だけ自作ウィジェットを用意すると初期費用が高くなる。

でもまぁやるしかない。
エンジニアという生き物は、正に面倒くさいことをしたくないがために面倒くさいをことをする人種なのです/(^o^)\オワター

この記事が気に入ったらサポートをしてみませんか?