web-dev-qa-db-fra.com

Supprimer une action d'une classe de plug-in externe

J'utilise un plugin qui a cette ligne de code pour ajouter une action de la classe Eazyest_Frontend:

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

Je veux enlever cela et faire quelque chose d'un peu différent sans éditer le plugin. Je pensais que cela ajouté à mon fichier functions.php pourrait fonctionner:

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

J'ai peut-être essayé une centaine de variantes pour lesquelles j'ai modifié la priorité, etc.

Si je commente la ligne d'action d'ajout d'origine dans le plug-in, cela a l'effet que je recherche, donc il me semble avoir identifié l'action correcte.

Je suis nouveau dans la suppression d'actions, comment fait-on?

5
Steve

Je me suis peut-être trompé, mais pourquoi ne pas simplement mettre la ligne suivante dans votre functions.php:

remove_action('eazyest_gallery_thumbnails', 'ezg_thumbnails');

Si une fonction de classe est liée à une action, vous pouvez utiliser le nom de la classe à la place de l'objet de classe:

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

Pour l'instant, je ne vois pas pourquoi cela ne fonctionnerait pas. Juste essayé avec une action de l'un de mes plugins.

5
tfrommen

Une technique similaire peut être utilisée pour masquer les avis d’administrateur non désirés.

Recherchez le nom de la fonction créant l'avis que vous souhaitez supprimer, puis ajoutez la ligne suivante au fichier functions.php de votre thème enfant:

remove_action( 'admin_notices', 'offending_function_that_is_creating_the_notice' );

Désormais, seul ce nag spécifique sera masqué tandis que d’autres notifications (potentiellement importantes) de ce plug-in seront toujours acceptées. Cela restera effectif lors de futures mises à jour, à moins que le développeur du plugin modifie le nom de la fonction créant le nag (peu probable).

2
MarkPraschan

Merci pour tous vos commentaires et réponses - je viens de résoudre ceci:

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