今回 プラグインで wp_enqueue_scripts で実行した アクションフックが 子テーマの functions.php からなかなか外せなかったのでメモ。
Priority
とりあえずadd_action側に priority の指定をしている場合は
remove_action でも priority を指定する
After
テーマで指定されているフックはプラグインより後で実行されるので、 after_setup_theme のタイミングで remove_action する
add_action( 'after_setup_theme', 'my_remove_action' );
function my_remove_action() {
remove_action( 'wp_enqueue_scripts', '外すアクション', 10, 2 );
}
これで外れない場合の対処
本題はここからです。上記ではずれない場合の対処方法を考えます。
remove_action() が動作する条件
外したい add_action() の後で読み込まれる必要がある。
実行順確認の準備
外したい add_action で実行される関数の中に 確認用で追記します。
function my_action_function() {
echo '<pre>これが消えたら成功</pre>';
// 実行する処理
}
add_action( 'wp_enqueue_scripts', 'my_action_function' );
echo '━━━━━━━━━━ この後で remove が読み込まれる必要がある ━━━━━━━━━━';
外す方の処置
function my_remove_function() {
echo '<pre>今から消すよ!</pre>';
$return = remove_action( 'wp_enqueue_scripts', 'my_action_function' );
// 削除成功したら 1 が返る
print '<pre style="text-align:left">';
print_r( $return );
print '</pre>';
}
// ここの add_action の実行タイミングが鍵になる
add_action( 'after_setup_theme', 'my_remove_function' );
みたいな形で書く。これで外す方の処理が
━━━━━━━━━━ この後で remove が読み込まれる必要がある ━━━━━━━━━━
より後で実行されてれば概ね remove に成功するので、後に実行されるように ここの add_action の実行タイミングを変更する。
アクションフックのタイミングは下記を見て検討する
https://wpdocs.osdn.jp/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3_API/%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%95%E3%83%83%E3%82%AF%E4%B8%80%E8%A6%A7
ちなみに今回プラグインで wp_enqueue_scripts で実行した アクションフックが 子テーマの functions.php からなかなか外せな件ですが、 wp_loaded のタイミングで外せました。