私は現在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";
}
?>
これで、コメントがある投稿でも「コメントなし」と表示されます。他のすべては正しく機能します。誰かが私を手伝ってくれる?
ありがとうございました。
have_comments
関数のコーデックスを引用するには:
この関数は設定されるグローバル$ wp_queryオブジェクトに依存します - これは通常The Loop内からのケースです
問題は、あなたのajaxハンドラがそれ自身のWP_Queryオブジェクトを作成することです。あなたはthe_post()
を呼んでいるのではなく、代わりに$posti->the_post()
を呼んでいることに注意してください。同じ論理がコメントにも当てはまります。
以下を試してください。
if ($posti->have_comments()) {
echo "Comments ok";
} else {
echo "No comments";
}
have_comments()
- のソースを見てください。このチェックはあなたのケースでは使われていないグローバルな$wp_query
オブジェクトからデータを取得します。
したがって、最初のステップはhave_comments()
checkを$posti->have_comments()
に置き換えることです。
私の意見では、それはJQueryの.load($[this].attr('href') '.div-with-content-and-comment');
と一緒に行く方が良いでしょう
あなたがajaxでロードしたいclass="div-with-content-and-comment"
のマークアップを持つsingle.phpを持っていることを確認するよりも。