我是ajax wordpress的新手,我想从它的id中获取帖子,我正在使用此代码,我正在获取数据但未过滤,它会在弹出窗口中显示所有帖子标题。
add_action('wp_ajax_data_fetch', 'data_fetch');
add_action('wp_ajax_nopriv_data_fetch', 'data_fetch');
function data_fetch(){
//load more posts
$post_id = $_POST["post_id"];
$query = new WP_Query( array(
'p' => $post_id,
'post_type' => 'sponsors'
));
if( $query->have_posts() ):
while( $query->have_posts() ):
$query->the_post();
the_title();
endwhile;
endif;
wp_reset_postdata();
die();
}
这是我的ajax代码:
jQuery( document ).on( 'click', '#click_me', function() {
var post_id = jQuery(this).data('id');
jQuery.ajax({
url : 'http://localhost/verturesort/wp-admin/admin-ajax.php',
type : 'post',
data : {
post_id : post_id,
action : 'data_fetch'
},
success : function( response ) {
jQuery('#datainsert').append( response );
}
});
return false;
});
这是我用来获取过滤数据的LINK
<a href="#" name="post_id" data-post_id='<?php echo $postID; ?>' id="click_me" class="open_it" >Fetch Data</a>
答案 0 :(得分:0)
您的代码出现了问题:
// from your ajax call
var post_id = jQuery(this).data('id');
// from your html
<a href="#" name="post_id" data-post_id='<?php echo $postID; ?>' id="click_me" class="open_it" >Fetch Data</a>
要解决此问题:
<a href="#" name="post_id" data-id='<?php echo $postID; ?>' id="click_me" class="open_it" >Fetch Data</a>
答案 1 :(得分:0)
另一种方法是在wordpress中使用wordpress rest API to retrieve a post本机。所以你的ajax调用成为:
jQuery( document ).on( 'click', '#click_me', function() {
var post_id = jQuery(this).data('id');
var request = jQuery.ajax({
url : 'http://localhost/verturesort/wp-json/wp/v2/posts/'+post_id,
method: "GET",
dataType: "json"
});
request.done(function( data ) {
console.log(data);
jQuery('#datainsert').html(data[0].content.rendered);
});
request.fail(function( jqXHR, textStatus ) {
console.log('fail')
});
return false;
});
你不再需要php部分了