私はスライダーを使ってブログ記事を表示するテーマに取り組んでいます。スライダーの下には、ページ番号ではなく日付がタイムラインのように表示され、対応するブログ投稿を呼び出すページ付けがあります。各投稿のコメントをスライダーの外側に表示します。それで、私は私のヘッダーにこのコードを持っています、ajaxでコメントを得るために:
:: EDITED(現在はwp-admin/admin-ajax.phpを使用してリクエストを処理しています、以下のアドバイスを参照)::
$(".timeline-entry a").live('click', function(event) {
event.preventDefault();
$.ajax({
url: '<?php echo admin_url('admin-ajax.php'); ?>',
type: 'POST',
action: 'do_ajax',
data: {
'post_id' : '72' //using a post id that I *know* has comments, for testing!
},
dataType: "json",
success: function(myResult) {
alert(myResult);
},
error: function(error) {
alert(error);
}
});
});
私のfunctions.php:
add_action('wp_ajax_nopriv_do_ajax', 'retrieve_comments');
add_action('wp_ajax_do_ajax', 'retrieve_comments');
function retrieve_comments(){
$myPost = $_REQUEST['post_id'];
$output = get_comments('post_id=' + $myPost);
$output = json_encode($output);
if(is_array($output)){
print_r($output);
}
else{
echo $output;
}
die;
};
アラートボックスに0
が表示されます。つまり、これはajaxが発生していることを意味しますが、私のphp関数には問題がありますね。
ご協力いただきありがとうございます。
ああ、私は私の構文が間違っていたと思います。
私が変更され:
action: 'do_ajax',
data: {
'post_id' : '72' //using a post id that I *know* has comments, for testing!
},
に:
data: {
'action' : 'do_ajax',
'post_id' : '72'
},
そしてconsole.log
から正しい応答を得ています。
[{"comment_ID":"1","comment_post_ID":"1","comment_author":"Mr WordPress","comment_author_email":"","comment_author_url":"http:\/\/wordpress.org\/","comment_author_IP":"","comment_date":"2012-08-28 19:55:20","comment_date_gmt":"2012-08-28 19:55:20","comment_content":"Hi, this is a comment.<br \/>To delete a comment, just log in and view the post's comments. There you will have the option to edit or delete them.","comment_karma":"0","comment_approved":"1","comment_agent":"","comment_type":"","comment_parent":"0","user_id":"0"},{"comment_ID":"2","comment_post_ID":"72","comment_author":"Mr WordPress","comment_author_email":"","comment_author_url":"http:\/\/wordpress.org\/","comment_author_IP":"","comment_date":"2010-07-11 12:10:08","comment_date_gmt":"2010-07-11 12:10:08","comment_content":"Hi, this is a comment.<br \/>To delete a comment, just log in and view the post's comments. There you will have the option to edit or delete them.","comment_karma":"0","comment_approved":"1","comment_agent":"","comment_type":"","comment_parent":"0","user_id":"0"}
だから今私は配列を処理するための最良の方法を考え出している:)
あなたのPHPファイルはWordPress環境のコンテキストでロードされていないので、WordPressの機能にアクセスすることはできません。 WordPressでAJAX呼び出しを処理する適切な方法、特に については、Codexのプラグイン の AJAXをご覧ください。 )視聴者側のAjax 。ページのタイトルにもかかわらず、これはAJAXがテーマでどのように扱われるべきかということでもあります。
EDIT - これはWordPress AJAX機能を理解するための良いチュートリアル (上記のCodexページの下部にリンクされています)です。 。