web-dev-qa-db-fra.com

Comment éviter les publications en double avec wp_insert_post sur single.php?

Je reçois un bug vraiment étrange (WP 3.1.3). Mon objectif est que les utilisateurs créent un nouveau message simplement en se posant sur un seul message. Pour que cela se produise, j'ai le code suivant dans mon single.php:

    <?php
    //-- Set up post values
    $myPost = array(
        'post_status' => 'publish',
        'post_type' => 'post',
        'post_author' => 2,
        'post_title' => 'e3i8ir',
        'comment_status' => 'closed',
        'ping_status' => 'closed',
        'post_category' => array(24),
    );

    //-- Create the new post
    $newPostID = wp_insert_post($myPost);

    ?>

Par tous les droits, cela devrait juste insérer un disque, non? Lorsque j'utilise cette fonction, cependant, il crée DEUX publications, exactement de la même manière.

En regardant la page, the_content ne s'affiche qu'une seule fois. La page ne s'affiche donc pas plusieurs fois (et entraîne donc deux appels wp_insert_post).

Quelqu'un a-t-il une idée de ce qui pourrait causer cela?

Merci d'avance, --eric

1
TheCosmonaut

essayez de mettre votre script dans une fonction et de l'exécuter pendant un hook d'action. peut-être le crochet wp_footer.

1
dwenaus

Spécifiez un identifiant unique au début du thème. Ce sera une chaîne d'identification dans un champ personnalisé pour le nouveau poste créé.

Avant d'ajouter l'article, recherchez des publications avec cet ID unique dans des champs personnalisés. Si vous ne le trouvez pas, ajoutez également la publication ET le champ personnalisé.

Vous trouverez ici des exemples sur la manière de rechercher des publications par champs personnalisés .

0
petermolnar

un correctif peut être d'avoir le champ de publication marqué comme unique dans la base de données - si la première insertion réussit, la seconde échouera

c'est une solution sale jusqu'à ce que vous trouviez une solution plus appropriée

0
mireille raad