WordPressの子テーマのfunctions.phpをクラス化する

関連記事

Habakiri以外のテーマを使う際に、子テーマのfunctions.phpに関数をベタベタ追加していくのは美しくないのでクラス化を試みたのですが、

ネットを漁っても面倒な方法しか見当たらなかったので色々と模索してみました。

Habakiriは本当に子テーマのカスタマイズのことを考えてくれているいいテーマだな、と改めて思いました。

Habakiriの子テーマの手法をマネする

当初はHabakiriの手法をマネして以下のように書いたのですが、どうにもhookがかからなかったりして上手くいかない。

<?php
function child_theme_setup()
{
  class ChildTheme
  {

    public function __construct()
           {
             add_action('wp_head', [$this, 'customHeader']);
           }

    public function customHeader()
           {
           }
  }
}

add_action('after_setup_theme', 'child_theme_setup');

シンプルに解決

紆余曲折を経て以下のようになりました。

<?php
class ChildTheme
{
  public function __construct()
         {
           add_action('after_setup_theme', [$this, 'forceOverRide']);
           add_action('wp_enqueue_scripts', [$this, 'wpHeadCleanUp']);
         }


  public function forceOverRide()
         {
           // 親テーマの関数を上書き
         }

  public function wpHeadCleanUp()
         {
           // 絵文字関連のファイルの読み込みを止める
         }
}

new ChildTheme();

ChildThemeを別ファイルにしてrequire_once()で呼び出してもいいと思いますが、どの道クラス名で名前を一個専有するので管理画面から編集しやすいこの形に。

デザイン面で楽をするために適当なテーマを選ぶと、本体の機能を上書きするのに苦労したりします。

やっぱり自分にはHabakiriがベストかな。

関連記事