裏紙に書く程度の内容

WordPressの子テーマで functions.php 上書き的なこと

WordPressで子テーマを作成した場合、functions.phpは上書きにはならない。上書きは無理っぽい。
フィルタの上書き的なことならできそう。

修正例

子側では別名の関数で定義し、add_filter() でフックする。
親側で定義されたフィルターフックは remove_filter() で除去する。

ただし、子側のfunctions.phpが親より先に呼ばれるため、子側で普通に書いても除去できない。
add_filter(‘after_setup_theme’, ‘*‘);
みたいな感じで、テーマが初期化された後に実行する。

親側

function hoge() {
  // 処理内容
}
add_filter('get_search_form', 'hoge');

子側

function child_hoge() {
  // 処理内容
}
add_filter('get_search_form', 'child_hoge');

// テーマ初期化後にフィルタ除去をフック
add_filter('after_setup_theme', 'remove_filters');

/**
 * フィルタ除去処理.
 */
function remove_filters() {
  $target = array('get_search_form' => 'hoge');
  foeach ($target as $key => $value) {
    remove_filter($key, $value);
  }
}

複数ある場合、$targetに追加していけばおk。

URABLO
広告
Index
広告