Como fazer com que os comentários funcionem para um post carregado por Ajax?

10

No momento, estou carregando uma única postagem usando ajax. Enquanto o pós-carregamento funciona ok, não consigo fazer com que os comentários sejam carregados. Aqui está o meu código:

Meu javascript para carregar a postagem:

<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>

O javascript passa por functions.php desta maneira:

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

Agora, aqui está o código em que eu realmente carrego meu conteúdo de postagem:

<?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";
    }
    ?>

Agora, mesmo para postagens com comentários, estou exibindo "Nenhum comentário" exibido. Tudo mais funciona corretamente. Alguém pode me ajudar?

Obrigado.

    
por Yash 06.03.2012 / 08:03

3 respostas

1

Para citar o Codex na função have_comments :

  

Esta função depende do objeto global $ wp_query a ser configurado - geralmente é o caso de dentro do Loop

O problema é que seu manipulador de ajax cria seu próprio objeto WP_Query. Observe que você não está chamando the_post() , em vez disso, está chamando $posti->the_post() . A mesma lógica se aplica também aos comentários.

Tente o seguinte:

if ($posti->have_comments()) {
    echo "Comments ok";
}  else {
    echo "No comments";
}
    
por Beowulfenator 15.08.2013 / 08:55
0

Na minha opinião, seria melhor usar um JQuery .load($[this].attr('href') '.div-with-content-and-comment');

Certifique-se de ter um único .php que tenha a marcação com o class="div-with-content-and-comment" que você deseja carregar via ajax.

    
por ifdion 09.08.2012 / 23:53
0

Veja a fonte de have_comments() - essa verificação recupera dados do objeto global $wp_query , que não é usado no seu caso.

O primeiro passo seria substituir have_comments() check por $posti->have_comments() .

    
por Rarst 17.11.2012 / 20:16