SWELLの高度なカスタマイズ

ArkheにはSnowMonkeyのようなテンプレート上書きフックがあり、子テーマを作らなくてもテンプレートファイルのカスタマイズができますよ!というのがSWELLとの差別化の1つだそうです。

ArkheもSWELLもget_part()というテンプレート呼び出しを独自関数で実装していますが、Arkheで使用しているget_part()は上書きできるフックが用意されています。

SWELLでget_part()を上書きするには?

SWELLで同じことを実現するには、親テーマのget_part()を修正しなければなりません。

Arkheのget_part()のソースをSWELLに持っていけば同じことは出来ると思います。

しかし、親テーマを変更するとテーマアップデートで不幸なことが起きますので、できればやりたくない。

get_part()はそもそも子テーマで上書きすることを想定した関数です。

get_part()で呼び出されているテンプレートファイルは、子テーマを作成し、テンプレートファイルを上書きするのが流儀でしょう。

検索すると、子テーマを作成せずに、functions.phpだけでテンプレートファイルを上書きするカスタマイズを実現できる、といった記事を見かけました。

もし、SWELLでArkheのget_part()のフック相当を実現して上書きできたとしても、子テーマに上書きファイルを用意するのと同じ修正になるはずです。

もともと、SnowMonkeyがテンプレートファイルを上書きするフックを用意している背景は、子テーマを作らずにカスタマイズするためです。

テンプレート上書きフックは、子テーマを作れば同じことができます。

子テーマを作成して上書きする

  1. 親テーマと同じディレクトリ構造を維持します。
  2. 変更するテンプレートファイルだけ子テーマに作成するようにします。

例えば、archive.phpというテンプレートファイルを修正したい場合、そこから呼び出されているテンプレートファイルが多くあると思いますが、実際に書き換えたファイルだけ子テーマに用意します。

何でもかんでも子テーマにコピーしてしまうと、親テーマとの差分管理が大変になりますので注意しましょう。