Maison > Tutoriel CMS > WordPresse > Comment éviter une boucle infinie lorsque WordPress utilise des hooks pour le développement de thèmes

Comment éviter une boucle infinie lorsque WordPress utilise des hooks pour le développement de thèmes

藏色散人
Libérer: 2021-04-30 10:07:15
avant
2005 Les gens l'ont consulté

La colonne tutorielle suivante de WordPress vous présentera comment éviter une boucle infinie lorsque WordPress utilise des hooks pour le développement de thèmes. J'espère que cela sera utile aux amis dans le besoin !

Comment éviter une boucle infinie lorsque WordPress utilise des hooks pour le développement de thèmes

Lors du développement de WordPress, nous utilisons souvent des hooks tels que save_post ou create_post_tag , afin que certaines données supplémentaires puissent être ajoutées lors de la mise à jour d'articles ou de catégories. Le moment où ces hooks sont déclenchés est le moment où les données sont publiées ou mises à jour. Si elles ne sont pas correctement gérées, une boucle infinie se produira, entraînant une boucle infinie lors de la mise à jour. données.

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);
}
Copier après la connexion

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');
}
Copier après la connexion

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.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal