LoginSignup
1
3

More than 5 years have passed since last update.

WordPressでremove_actionが効かない時の対処メモ

Posted at

今回 プラグインで 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 のタイミングで外せました。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3