Je charge actuellement un seul message en utilisant ajax. Bien que le chargement du post fonctionne correctement, je ne parviens pas à charger les commentaires. Voici mon code:
Mon javascript pour charger le post:
<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 cette façon:
function implement_posts()
{
//<?php
get_template_part( 'loop', 'single' );
die();
}
Maintenant, voici le code où je charge réellement 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, je reçois "Aucun commentaire" affiché. Tout le reste fonctionne correctement. Quelqu'un peut m'aider?
Je vous remercie.
$linkid = "p=".$_POST["postid"];
n'est pas sûr pour l'injection verry sql. bien que wordpess vérifie cela, vous voudrez peut-être le faire vous-même.Réponses:
Pour citer le Codex sur la
have_comments
fonction: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:
la source
A mon avis, il vaudrait mieux aller avec un JQuery
.load($[this].attr('href') '.div-with-content-and-comment');
Assurez-vous que vous avez un single.php qui a le balisage avec celui que
class="div-with-content-and-comment"
vous souhaitez charger via ajax.la source
Regardez la source de
have_comments()
- cette vérification récupère les données de l'$wp_query
objet global , qui n'est pas utilisé dans votre cas.La première étape serait donc de remplacer
have_comments()
check par$posti->have_comments()
.la source