如果你想在wordpress中使用ajax,你必须遵循以下步骤:1)首先让你的js文件像main一样。js。
2) 在函数中本地化它。php与wp_localize_script()
.
wp_enqueue_script( \'main.js\', get_template_directory_uri().\'/js/main.js\', array( \'jquery\' ) );
wp_localize_script( \'main.js\', \'ajax_object\', array(\'ajax_url\' => admin_url(\'admin-ajax.php\')) );
3)使用javascript或jquery代码运行ajax查询,并在ajax数据对象中添加一个action属性,如action:“load\\u more\\u posts”。此action属性将使函数具有相同的名称来执行我们的代码。
jQuery(function($){
$(\'#load_more_posts\').on(\'click\', function(e){
console.log(\'hi\');
e.preventDefault();
var $offset = $(this).data(\'offset\');
console.log(\'var\'+$offset);
$.ajax({
method: \'POST\',
url: ajax_object.ajax_url,
type: \'JSON\',
data: {
offset: $offset,
action: \'load_more_posts\'
},
success:function(response){
console.log(response);
$(\'#load_more_posts\').data(\'offset\', parseInt(response.data.offset));
}
});
})
});
4)在功能中。php
add_action( \'wp_ajax_load_more_posts\', \'load_more_posts\' );
add_action( \'wp_ajax_nopriv_load_more_posts\', \'load_more_posts\' );
function load_more_posts(){
global $post;
$args = array(\'post_type\'=>\'post\', \'posts_per_page\'=> 2, \'offset\'=> $_POST[\'offset\']);
$rst=[];
$query = new WP_Query($args);
if($query->have_posts()):
while($query->have_posts()):$query->the_post();
$rst[] = $post;
endwhile;
wp_reset_postdata();
$offset = $_POST[\'offset\']+2;
endif;
wp_send_json_success(array(\'post\'=>$rst, \'offset\'=>$offset));
}
wp\\u ajax\\u nopriv\\u(操作)为未登录的用户执行。wp\\u ajax\\u(操作)为登录的用户执行。
您可以随意使用查询响应。希望这会有所帮助!