web-dev-qa-db-fra.com

Intercepter une add_action

Supposons qu'un autre plugin ou thème utilise un hook add_action. Existe-t-il un moyen de déterminer si un crochet spécifique est utilisé par quelqu'un d'autre?

Exemple: supposons qu'un plugin ait ce code

add_action ( 'publish_post', 'myCustomFunction' );
function myCustomFunction() {
   // does something
}

Mon plugin peut-il "ressembler" à l'utilisation de ce hook dans "publish_post"? Et puis-je supprimer ce crochet d'action avant qu'il ne se déclenche?

3
Rick Hellewell

Vous pouvez utiliser has_action() . Il retourne la priorité du hook s'il existe, sinon false. Vérifiez donc que la priorité n’est pas égale à false (et pas seulement false-y, ou être accroché à 0 apparaîtra faux), puis utilisez-le pour supprimer le hook.

$priority = has_action( 'publish_post', 'myCustomFunction' );

if ( $priority !== false ) {
    remove_action( 'publish_post', 'myCustomFunction', $priority );
}

Il y a aussi has_filter(), qui fait exactement la même chose (has_action() appelle simplement has_filter()).

2
Jacob Peattie