¿Cómo hacer que los comentarios funcionen para una publicación cargada por Ajax?

10

Actualmente estoy cargando una sola publicación usando ajax. Si bien la carga de publicaciones funciona bien, no puedo cargar los comentarios. Aquí está mi código:

Mi javascript para cargar la publicación:

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

El javascript pasa a través de functions.php de esta manera:

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

Ahora, aquí está el código donde realmente cargo el contenido de mi publicación:

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

Ahora, incluso para las publicaciones que tienen comentarios, aparece "No hay comentarios". Todo lo demás funciona correctamente. ¿Puede alguien ayudarme?

Gracias.

    
pregunta Yash 06.03.2012 - 08:03

3 respuestas

1

Para citar el Códice en la función have_comments :

  

Esta función se basa en el objeto global $ wp_query que se va a configurar; este suele ser el caso desde The Loop

El problema es que su controlador ajax crea su propio objeto WP_Query. Tenga en cuenta que no está llamando a the_post() , en cambio está llamando a $posti->the_post() . La misma lógica se aplica a los comentarios también.

Prueba lo siguiente:

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

En mi opinión, sería mejor ir con un JQuery .load($[this].attr('href') '.div-with-content-and-comment');

Asegúrate de tener un solo.php que tenga el marcado con el class="div-with-content-and-comment" que deseas cargar a través de ajax.

    
respondido por el ifdion 09.08.2012 - 23:53
0

Mire la fuente de have_comments() : esta verificación recupera datos del objeto global $wp_query , que no se usa en tu caso.

Entonces, el primer paso sería reemplazar have_comments() check con $posti->have_comments() .

    
respondido por el Rarst 17.11.2012 - 20:16

Lea otras preguntas en las etiquetas