Ajax WordPress pass post URLs

时间:2018-02-19 作者:CyberJ

我正在使用wp_localize_script 将post数据发送到ajax。

wp_localize_script( \'my-script.js\', \'ajax_object\', array(\'ajax_url\' => admin_url(\'admin-ajax.php\')) );
add_action( \'wp_ajax_load_more_posts\', \'ajax_posts\' );
将post数据发送到ajax:

function ajax_posts(){
    global $post;
    $args = array(\'post_type\'=>\'post\', \'posts_per_page\'=> 2);
    $posts_arr=[];
    $query = new WP_Query($args);
    if($query->have_posts()):
        while($query->have_posts()):$query->the_post();

            $posts_arr[] = $post;

        endwhile;
        wp_reset_postdata();

    endif;
    wp_send_json_success(array(\'post\'=>$posts_arr));
}
在我的ajax成功函数中,我使用以下内容将帖子附加到HTML中:

success:function(response){

     var post_data = response.data.post;

     $.each(post_data, function(index, value) {

        $("#content").append(\'<a href="How can I get the post URL here?">\' + value.post_title + \'</a>\');

    });          

}
它在HTML中添加了2篇文章。它工作得很好,但是我怎样才能将帖子url添加到ajax_posts() php函数并将其传递给ajax并使用?

这是我从ajax获得的数据:

enter image description here

是否也可以将post URL添加到post数组?

注意:我使用ajax在单击按钮时加载更多帖子,但简化了这里的代码。我无法将php直接添加到js中。必须从ajax_posts() php函数到我的js中的ajax。

1 个回复
最合适的回答,由SO网友:Johansson 整理而成

是的,那很容易。您可以使用get_the_permalink() 函数检索帖子的链接。以下是操作方法:

// You are storing the post data here
$posts_arr[] = $post;

// Add the URL to the same array element
$posts_arr[][\'url\'] = get_the_permalink();
您可以使用$query->current_post 方法,因此我建议您将其用作数组的键:

// You are storing the post data here
$posts_arr[ $query->current_post ] = $post;

// Add the URL to the same array element
$posts_arr[ $query->current_post ][\'url\'] = get_the_permalink();

结束