WordPress : remove_action ne fonctionne pas, même après avoir changé de priorité
Donc, l’une des fonctions de mon thème est:
public function job_manager_job_filters_distance() {
//Show some HTML
}
Et quelque part ailleurs dans le document se trouve:
add_action( 'job_manager_job_filters_search_jobs_end', array( $this, 'job_manager_job_filters_distance' ), 0 );
Je veux désactiver cette fonction.
Alors naturellement, je suis allé dans functions.php de mon thème enfant et j’ai ajouté remove_action :
remove_action( 'job_manager_job_filters_search_jobs_end', 'job_manager_job_filters_distance' );
Cela n’a pas fonctionné. Ensuite, j’ai essayé différentes priorités pour la suppression :
remove_action( 'job_manager_job_filters_search_jobs_end', 'job_manager_job_filters_distance', 20 );
Toujours pas aller. Ensuite, j’ai essayé de l’envelopper dans une fonction qui se déclenche après le chargement du thème :
function remove_listify_junk() {
remove_action( 'job_manager_job_filters_search_jobs_end', 'job_manager_job_filters_distance' );
}
add_action( 'after_setup_theme', 'remove_listify_junk', 999 );
Et la fonction fait toujours son truc =[…
Qu’est-ce que j’oublie ici?
Solution n°1 trouvée
Vous essayez de décrocher une fonction PHP par opposition à une méthode d’instance (de classe) – voir ici :
array( $this, 'job_manager_job_filters_distance' )
… c’est le rappel réel enregistré sur le hook. Pour décrocher, vous avez besoin de la même chose (une référence à l’instance).
Si vous essayez de décrocher de l’ intérieur de la classe, c’est aussi simple que d’utiliser ce qui précède. Sinon, vous avez besoin d’une référence à l’instance – recherchez quelque chose comme ce qui suit dans votre code :
$my_class = new Name_Of_Class;
… alors vous exécuteriez :
remove_action( 'job_manager_job_filters_search_jobs_end', array( $my_class, 'job_manager_job_filters_distance' ) , 0 );
0 commentaire