Par exemple, lors de la sauvegarde d'un article, nous devons accrocher une fonction sur le hook save_post. Le but de cette fonction est de modifier le titre de l'article et d'ajouter le nom de l'auteur devant. le titre de l'article. , nous affichons cette modification en appelant la fonction wp_update_post. L’exemple de code est le suivant.
add_action('save_post', 'wprs_update_post'); function wprs_update_post($post_id) { $title = get_the_title($post_id); $title = "一刀:" . $title; $args = [ 'ID' => $post_id, 'post_title' => $title, ]; wp_update_post($args); }
Dans le code ci-dessus, le hook "save_post" se produit pendant le processus d'appel de la fonction wp_update_post, via le hook "save_post", nous appelons la fonction wp_update_post Dans cette fonction, "save_post" est également exécuté. . crochet. En conséquence, le programme a continué à se dérouler sans relâche.
Les programmeurs expérimentés peuvent facilement découvrir ce problème, mais l'ordinateur ne sait pas qu'il s'agit d'une boucle infinie. Nous ne pouvons pas blâmer l'ordinateur, après tout, c'est juste une machine stupide. Ce que nous pouvons faire, c'est être aussi prudent que possible pendant le processus de développement pour éviter l'apparition de boucles infinies.
Alors, comment résoudre cette boucle infinie dans WordPress ? En fait, la méthode est très simple.
Comment éviter la boucle infinie dans WordPress
C'est toujours le code ci-dessus Avec une légère modification, on peut parfaitement éviter cette boucle infinie. Ce qui suit est le code modifié. Par rapport au code de boucle infinie ci-dessus, nous n'avons ajouté que deux lignes.
add_action('save_post', 'wprs_update_post'); function wprs_update_post($post_id) { // 获取文章标题并在文章标题前面加上作者 $title = get_the_title($post_id); $title = "一刀:" . $title; $args = [ 'ID' => $post_id, 'post_title' => $title, ]; // 更新文章 remove_action('save_post', 'wprs_update_post'); wp_update_post($args); add_action('save_post', 'wprs_update_post'); }
Le principe est très simple. Avant d'exécuter la fonction "wp_update_post", on désinstalle d'abord la fonction qui se bloque sur le hook "save_post" et provoque une boucle infinie, afin qu'il n'y ait pas d'exécution répétée du hook "save_post". Fonction "wprs_update_post". Après avoir mis à jour l'article, nous monterons ce hook pour une utilisation ultérieure.
Si vous rencontrez un problème de boucle infinie lors du développement de WordPress, vous souhaiterez peut-être vous référer au code ci-dessus et le modifier, afin que les fonctions dont nous avons besoin puissent être réalisées sans provoquer de problème de boucle infinie.