Ajax:如何从其ID wordpress中获取帖子

时间:2018-03-25 13:22:12

标签: javascript php jquery ajax wordpress

我是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>

2 个答案:

答案 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部分了