web-dev-qa-db-fra.com

remove_action dans un thème

J'utilise un thème qui est mis à jour assez souvent. Pour cela, il a ajouté un fichier custom.php pour inclure les modifications. Maintenant, dans ce thème, sous le fichier functions.php, le développeur a inclus sa propre section méta qui est ajoutée à l'aide de la fonction suivante:

add_action('wp_head', 'theme_metas');

Je veux laisser mon plugin SEO gérer cela, alors j'ai essayé de l'ajouter dans le fichier custom.php:

remove_action('wp_head', 'theme_metas', 15);

J'ai même essayé de modifier la priorité plus haut et plus bas que 10 (ce qui est la valeur par défaut) mais les métas sont toujours visibles. Quelqu'un peut-il nous éclairer s'il vous plaît?

6
Aftab

Votre remove_action doit avoir une priorité correspondant à la priorité utilisée dans add_action.

Important: pour supprimer un hook, les arguments $ function_to_remove et $ priority doivent correspondre lors de l'ajout du hook. Cela vaut pour les filtres et les actions. Aucun avertissement ne sera donné en cas d'échec de la suppression.

http://codex.wordpress.org/Function_Reference/remove_action

Dans votre cas, il semble que remove_action('wp_head', 'theme_metas'); devrait fonctionner, mais vous pouvez avoir des problèmes à cause du mode et du moment de chargement de votre fichier custom.php.

4
s_ha_dum

Pour supprimer une action, la priorité doit être la même que celle utilisée lors de l'ajout de l'action. dans votre cas, il devrait être

remove_action('wp_head', 'theme_metas');

ou

remove_action('wp_head', 'theme_metas',10);

Le détail à retenir est que la suppression d’une action ne peut être effectuée qu’après que l’action a déjà été ajoutée . Les actions sont simplement stockées dans un tableau et tout ce que remove_action fait consiste à annuler l'entrée. Si remove_action est appelé avant add_action, le résultat final sera que la suppression ne fera rien.

Par conséquent, vous ne devez appeler remove_action que lorsque vous êtes sûr que l’association add_action a été appelée. Pour la plupart des actions, il est conseillé d’accroche avec la priorité la plus élevée sur l’accroché en question.

Dans ton cas

add_action('wp_head','wpse86994_remove_action',1); // prioroty of 1, but can be anything higher (lower number) then the priority of the action

function wpse86994_remove_action() {
  remove_action('wp_head', 'theme_metas');
}
5
Mark Kaplun