Comment faire en sorte que les commentaires fonctionnent pour un article chargé par Ajax?

10

Je charge actuellement une publication en utilisant ajax. Bien que le post-chargement fonctionne correctement, je ne parviens pas à charger les commentaires. Voici mon code:

Mon javascript pour charger le message:

<script>
$(".view_post").click(function(e) {
    e.preventDefault();
    postid = $(this).attr("rel");
    $.ajax({
        url:"/wp-admin/admin-ajax.php",
        type:'POST',
        data:'action=posts_open&postid='+postid,
        success: function(html){
            $("#b_contentwrapper").empty();
            $("#b_contentwrapper").append(html);
        }
    });
});
</script>

Le javascript passe par functions.php de la manière suivante:

function implement_posts()
{
    //<?php
    get_template_part( 'loop', 'single' );
    die();
}

Maintenant, voici le code où je charge le contenu de mon message:

<?php
    $linkid = "p=".$_POST["postid"];
    $posti = new WP_Query($linkid);
    $posti->the_post();
    echo "Time: ";
    the_time('F jS, Y');
    echo "<br />";
    the_category(', ');
    echo "<br />";
    the_title();
    echo "<br />";
    the_content();
    echo "<br />";
    comment_form();
    ?>
    </div>
    <?php if (have_comments()) {
        echo "Comments ok";
    }
    else
    {
        echo "No comments";
    }
    ?>

Maintenant, même pour les messages contenant des commentaires, le message "Aucun commentaire" s'affiche. Tout le reste fonctionne correctement. Quelqu'un peut-il m'aider?

Merci.

    
posée Yash 06.03.2012 - 08:03

3 réponses

1

Pour citer le Codex sur la fonction have_comments :

  

Cette fonction repose sur l’objet global $ wp_query à définir - c’est généralement le cas depuis The Loop

Le problème est que votre gestionnaire ajax crée son propre objet WP_Query. Notez que vous n'appelez pas the_post() , mais que vous appelez $posti->the_post() . La même logique s’applique également aux commentaires.

Essayez ce qui suit:

if ($posti->have_comments()) {
    echo "Comments ok";
}  else {
    echo "No comments";
}
    
réponse donnée Beowulfenator 15.08.2013 - 08:55
0

À mon avis, il serait préférable d’utiliser un JQuery .load($[this].attr('href') '.div-with-content-and-comment');

Assurez-vous d'avoir un single.php contenant le balisage avec le class="div-with-content-and-comment" que vous voulez charger via ajax.

    
réponse donnée ifdion 09.08.2012 - 23:53
0

Regardez la source de have_comments() - cette vérification extrait les données de l'objet global $wp_query , qui n'est pas utilisé. dans votre cas.

La première étape serait donc de remplacer have_comments() check par $posti->have_comments() .

    
réponse donnée Rarst 17.11.2012 - 20:16

Lire d'autres questions sur les étiquettes