web-dev-qa-db-ja.com

外部プラグインクラスからアクションを削除する

私はEazyest_Frontendクラスからアクションを追加するためにこのコード行を持つプラグインを使用しています。

add_action( 'eazyest_gallery_thumbnails', 'ezg_thumbnails',5);

私はそれを取り除き、プラグインを編集せずに少し違ったことをしたいのです。私はこれが私のfunctions.phpファイルに追加されたがうまくいくかもしれないと思った:

global $eazyest_frontend;    
remove_action( 'eazyest_gallery_thumbnails', array($eazyest_frontend,'ezg_thumbnails'), 1, 1 );

私はたぶん私が優先順位などを変えた100の変化を試みたがまだ何も働かない。

プラグインの元のadd action行をコメントアウトしても、探している効果があるので、正しいアクションを特定したようです。

アクションを削除するのは初めてですが、どうすればよいですか。

5
Steve

たぶん私はあなたが間違っているのですが、なぜあなたはあなたのfunctions.phpに次の行を入れるだけではいけない:

remove_action('eazyest_gallery_thumbnails', 'ezg_thumbnails');

アクションにフックされたクラス関数がある場合は、クラスオブジェクトの代わりにクラス名を使うことができます。

remove_action(
    'eazyest_gallery_thumbnails',
    array('EazyestFrontendClassName', 'ezg_thumbnails')
);

今は、なぜこれがうまくいかないのかわかりません。私のプラグインの1つからアクションを試してみました。

5
tfrommen

不要な管理者への通知を隠すために、同様の手法を使用できます。

削除したい通知を作成している関数の名前を見つけてから、子テーマの functions.php fileに次の行を追加します。

remove_action( 'admin_notices', 'offending_function_that_is_creating_the_notice' );

そのプラグインからの他の(潜在的に重要な)通知がまだ通過している間今、その特定のナグだけが隠されるでしょう。プラグイン開発者がnagを作成する関数の名前を変更しない限り、これは将来のアップデートでも有効です。

2
MarkPraschan

すべてのコメントと回答をありがとう - 私はちょうどこれを解決しました:

function remove_eazyest_gallery() {
remove_action('eazyest_gallery_thumbnails',     'ezg_thumbnails', 5);
}
add_action( 'eazyest_gallery_ready', 'remove_eazyest_gallery', 1 );
1
Steve