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

藏色散人
藏色散人avant
2021-04-30 10:07:151997parcourir

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);
}

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.

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer