WordPressのテーマのカスタマイズはいろいろな方法がありますが、主にLightningにおいての推奨カスタマイズ場所について解説します。

この記事は「Vektor WordPress Solution Advent Calendar 2020」の12月8日の記事になります。

子テーマでカスタマイズしてほしくないケース

WordPressは親テーマのファイルを子テーマに複製すると、子テーマの方が優先して読み込まれるという便利な仕組みがあります。しかし使い方によってはテーマのアップデートで影響が出るので注意が必要です。

singular.php や index.php からカスタマイズするのは非推奨

親テーマのsingle.phpをコピーして single-投稿タイプ名.php にしたり、特定の固定ページだけ page.php(Lightningではsingular.php)をコピーして page-スラッグ名(またはテンプレート名).php などにしてカスタマイズするのは常套手段ですが、Lightnningでは非推奨です。

非推奨の理由

index.php / single.php / page.php などはページ全体のテンプレートファイルですが、カスタマイズしたい範囲はどこですか?ページ全体をカスタマイズしたいわけではありませんよね?
おそらく「カラム数を指定したい」とか「ページヘッダーを非表示にしたい」とか「詳細ページで日付と投稿者を表示したくない」とか「本文エリアだけカスタムフィールドを追加したい」とか、ページ内の一部だけカスタマイズしたいケースがほとんどではないか思います。

構造的な仕様変更のアップデートに対応できない

過去のバージョンアップで、カラム数やページヘッダーやパンくずの表示制御などを設定で制御できる機能を追加しました。

こういったいわばレイアウトや表示要素に関する重要な変更は index.php や singular.php など、HTMLで外側に該当するファイルに書かれるので、これが子テーマに複製されてしまっていると、バージョンアップに応じてカスタマイズしたファイルの修正が必要になるので、子テーマに index.php 及び singular.php から派生したフィルがあるのは望ましくありません。

header.php / footer.php もカスタマイズ非推奨

header.php 及び footer.php も重要な仕様変更が入る可能性があるので、ファイルを子テーマに複製してカスタマイズするべきではありません。カスタマイズしたい場合は可能な限りアクションフックやフィルターフックで対応してください
アクションフックやフィルターフックに関しては近日別途改めてブログに書きますが、よくわからなかったらフォーラム(Pro版ユーザーのみ書き込み可能)で質問してください。

そもそもコードのカスタマイズの必要性

カラム数の変更やページヘッダー/パンくずの表示制御は設定で変更できる

現行のLightningでは、カラム数の設定は 外観 > カスタマイズ > Lightning レイアウト設定 からできますし、ページヘッダーやパンくずの非表示及びカラム数も記事毎に編集画面の Lightningデザイン設定から表示制御可能で、他にもありとあらゆる項目がノーコードで設定できるようになっているので、そもそもテンプレートカスタマイズの必要性はかなり下がっています。

非表示にしたいだけならCSSで対応が無難

特定の要素を非表示にしたいだけなら何もPHPファイルをカスタマイズしなくても、対象箇所に対してcssで display:none; 指定するだけで十分です。
対象箇所のセレクタの指定は下記を参照ください。

WordPress超初心者でもできる! 簡単なデザイン(CSS)カスタマイズ方法徹底解説

特定のページの特定の箇所の非表示の例をCSSカスタマイズに追加

カスタマイズされそうな場所はテンプレートが小分けにしてある

そもそも singular.php からカスタマイズしようとして中身を見ると、おそらくカスタマイズしたい場所は singular.php には直接書いてなくて、singular.php の中で呼び出しているファイルではないでしょうか?

例えば本文欄まわりであれば、template-parts/post/content.php を読み込んでいますが、これを特定の投稿タイプだけ変更したい場合は子テーマに同じ階層で複製して、template-parts/post/content-投稿タイプ名.php としてカスタマイズすれば効きます。

特定の固定ページだけの場合は template-parts/post/content-スラッグ名.php で効きます。

アクションフック&フィルターフックでカスタマイズする

アクションフックやフィルターフックを使うと、アクションフックが用意されている場所に対して好きな要素を追加したり、フィルターフックでは標準の出力内容を改変したりする事ができます。

PHPやフックの知識があればこの方法がアップデートの影響を受ける可能性が比較的小さいです。フックの書き方については近日別途記事を書きます。

結局どこに書くのがいいか?

問題はそのフックのプログラムをどこに書くべきかという点で、主に

  • 子テーマのfunctions.php などに書く
  • 独自のカスタマイズ用のプラグインを用意してそこに書く

の2種類になるかと思います。

個人的な見解としては

カスタマイズ内容カスタマイズ場所理由
どの案件でも使うようなテーマのカスタマイズテーマ専用
オレオレ
プラグイン
他でも使い回しやすい
案件固有のカスタマイズ案件専用
プラグイン
リニューアルでテーマ変更になった時に作業が少なく済む
案件固有の表示要素部分子テーマテンプレートファイルの上書きなど手軽にできる
途中から子テーマに切り替えると追加CSSなど効かなくなるなどもあるので、最初から子テーマは用意しておいて良いのでは?

かなと思ったりしますが、量が少なかったら子テーマ一発の方が管理が楽だったりもしますし、カスタマイズの分量に応じてケースバイケースにはなるかなと思います。

そのあたりは以下の記事など参考にしてみてください。

ちなみに明日WPZoomUpさんがこの話題のオンライン勉強会を開催されますので、興味のある方はそちらもどうぞ!

Follow me!

この記事を書いた人

石川栄和代表取締役
名古屋のウェブ制作会社数社に10年程度務めた後、株式会社ベクトル設立。
企画・運営・コンサルティング〜WordPressを中心としたシステム開発まで幅広く携わる。
[ 著書 ]
・いちばんやさしいWordPressの教本(共著)
・現場でかならず使われているWordPressデザインのメソッド(共著)
[ 最近のWordPressコミュニティでの活動 ]
2019 WordCampNiigata セッションスピーカー
2019 WordCampHaneda セッションスピーカー
2018 WordCampOsaka セッションスピーカー
2017 WordCampKyoto セッションスピーカー

初心者でも簡単!無料WordPressテーマ

100%GPL / 商用利用可能

Lightning は WordPress公式ディレクトリに登録されているカスタマイズ性の高いテーマです。
デモデータも配布されているので、ビジネスサイトの雛形が数分でセットアップできます。

VWSオンラインコミュニティー

オンラインコミュニティでは、より良いテーマ・プラグイン開発のため、機能改善・追加要望などの書き込み大歓迎です!
ユーザー同士の交流や意見交換の場としてもお気軽にご参加ください。
※質問はフォーラムでのみ対応となります。