WordPressの子テーマから親テーマのフックを削除する

あー困った。

この挙動は親テーマの方で下記のように定義しているメソッド hogehoge_script でやっている

add_filter( ‘wp_enqueue_scripts’, ‘hogehoge_scripts’, 10 );

…という場合、この hogehoge_scripts の挙動を書き換えたいときの方法。

親テーマの add_filter を無効にする

無効にできればなんとかなる…ってことで無効にする方法

function remove_hogehoge_scripts() {
	remove_action( 'wp_enqueue_scripts', 'hogehoge_scripts', 10 );
}
add_action( 'after_setup_theme', 'remove_hogehoge_scripts' );

これで無効に出来ました。

その上で上書きしたい場合…

親テーマの add_filter を上書きする

上書きするのは上の無効した上で再定義すればよいのです。

function remove_hogehoge_scripts() {
	remove_action( 'wp_enqueue_scripts', 'hogehoge_scripts', 10 );
	// 新たに定義
	add_action( 'wp_enqueue_scripts', 'neo_hogehoge_scripts', 10 );
}
add_action( 'after_setup_theme', 'remove_hogehoge_scripts' );

// 新たなメソッド
function neo_hogehoge_scripts() {
	// あれをこうしてああしてこうする を書きます
	wp_register_script( 'neo-hogehoge-js',  get_theme_file_uri( 'js/hogehoge.js' ), array() );
	wp_enqueue_script( 'neo-hogehoge-js' );

}

いつも忘れるので書いておいた感じになります。

この記事が気に入ったら
いいね ! しよう

Twitter で