В настоящее время я загружаю один пост, используя ajax. Пока загрузка сообщений работает нормально, я не могу загрузить комментарии. Вот мой код:
Мой javascript для загрузки поста:
<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>
Javascript проходит через functions.php следующим образом:
function implement_posts()
{
//<?php
get_template_part( 'loop', 'single' );
die();
}
Теперь вот код, куда я на самом деле загружаю содержимое своего сообщения:
<?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";
}
?>
Теперь даже для сообщений с комментариями отображается сообщение «Без комментариев». Все остальное работает правильно. Может кто-нибудь мне помочь?
Спасибо.
$linkid = "p=".$_POST["postid"];
не верный SQL инъекций безопасно. хотя WordPess проверяет это, вы можете сделать это самостоятельно.Ответы:
Чтобы процитировать кодекс
have_comments
функции:Проблема в том, что ваш обработчик ajax создает свой собственный объект WP_Query. Обратите внимание, что вы не звоните
the_post()
, вы звоните$posti->the_post()
. Та же логика применима и к комментариям.Попробуйте следующее:
источник
На мой взгляд, было бы лучше пойти с JQuery
.load($[this].attr('href') '.div-with-content-and-comment');
Затем убедитесь, что у вас есть файл single.php с разметкой, которую
class="div-with-content-and-comment"
вы хотите загрузить через ajax.источник
Посмотрите на источник
have_comments()
- эта проверка извлекает данные из глобального$wp_query
объекта, который не используется в вашем случае.Поэтому первым шагом будет замена
have_comments()
чека на$posti->have_comments()
.источник