2014-07-24 8 views
0

Voici comment je l'ai implémenté:WordPress fonction appels crochet de deux

add_action('delete_post', array('MyClassName', 'delete')); 

Dans la fonction d'effacement Je travaillais avec un wpdb- $> commande d'insertion pour voir si la fonction est appelée. Mais je vois que la commande $ wpdb-> insert est appelée deux fois (insère deux lignes dans ma table). Des idées sur la raison pour laquelle quelque chose comme ça pourrait arriver?

J'ai également essayé d'utiliser le hook before_delete_post car cela ne me fait pas vraiment de différence, mais j'obtiens le même résultat.

EDIT:

Il semble que la fonction de suppression est appelée pour chaque entrée dans la table wp_posts pour une raison quelconque. Donc, si le message a 3 révisions, la fonction de suppression sera appelée 4 fois (la publication originale + 3 révisions). C'est un comportement vraiment bizarre.

Répondre

0

J'ai trouvé ma solution.

La fonction que vous connectez dans delete_post (ou probablement tout autre type de connexion similaire) s'exécute autant de fois que nécessaire. Considérant que delete_post doit supprimer le message et toutes ses révisions, il sera toujours exécuté plus d'une fois. Afin d'éviter que votre fonction s'exécute à chaque fois que WordPress supprime un enregistrement de la base de données, vous pouvez utiliser did_action ($ hook). Cette fonction renvoie le nombre de fois que le hook a été exécuté. Avec ceci en considération, nous pouvons résoudre notre problème de multiples exécutions en plaçant cette condition dans notre fonction:

Questions connexes