这没有正确实现,您可以尝试以下操作:
页PHP
在向内容添加包装后,使用相同的标记和调用:
<div class="site-content clearfix">
<h1>Alex Blog</h1>
<div id="page-posts-wrapper">
<?php
$ourCurrentPage = get_query_var('paged');
$aboutPosts = new WP_Query(array(
'post_type' => 'tour',
'post_status' => 'publish',
'posts_per_page' => 3,
));
if ($aboutPosts->have_posts()) :
while ($aboutPosts->have_posts()) :
$aboutPosts->the_post();
?>
<span> <?php the_title(); ?> </span>
<br>
<?php endwhile;
echo paginate_links(array(
'total' => $aboutPosts->max_num_pages
));
endif;
?>
</div>
</div>
作用PHP
加载js文件并本地化查询数据,以便稍后生成页面:
function custom_assets_39828328() {
// Correct the path and js file name before using.
wp_enqueue_script( 'ajax-pagination', get_stylesheet_directory_uri() . '/js/ajax-pagination.js', array(), '1.0', true );
global $wp_query;
wp_localize_script( 'ajax-pagination', 'ajaxpagination', array(
'ajaxurl' => admin_url( 'admin-ajax.php' ),
'query_vars' => json_encode( $wp_query->query )
));
}
add_action( 'wp_enqueue_scripts', 'custom_assets_39828328' );
编写浏览页面时使用的回调函数:
/**
* AJAX Pagination function
*/
function my_ajax_pagination_72372732() {
$query_vars = json_decode( stripslashes( $_POST['query_vars'] ), true );
$query_vars['post_type'] = 'tour';
$query_vars['paged'] = $_POST['page'];
$query_vars['post_status'] = 'publish';
$query_vars['posts_per_page'] = 3;
$posts = new WP_Query( $query_vars );
$GLOBALS['wp_query'] = $posts;
if( ! $posts->have_posts() ) {
echo 'No results found';
}
else {
while ( $posts->have_posts() ) {
$posts->the_post();
?>
<span> <?php the_title(); ?> </span><br>
<?php
}
echo paginate_links(array('total' => $posts->max_num_pages ));
}
die();
}
add_action( 'wp_ajax_nopriv_ajax_pagination', 'my_ajax_pagination_72372732' );
add_action( 'wp_ajax_ajax_pagination', 'my_ajax_pagination_72372732' );
JS代码
通过Ajax将必要的详细信息传递给调用函数并显示响应:
(function($) {
function find_page_number(element) {
element.find('span').remove();
return parseInt(element.html());
}
$(document).on('click', 'a.page-numbers', function(event) {
event.preventDefault();
page = find_page_number($(this).clone());
$.ajax({
url: ajaxpagination.ajaxurl,
type: 'post',
data: {
action: 'ajax_pagination',
query_vars: ajaxpagination.query_vars,
page: page
},
success: function(html) {
$('#page-posts-wrapper').empty();
$('#page-posts-wrapper').append(html);
}
})
})
})(jQuery);
您还可以将ajax回调查询参数替换为以下参数(可选):
$new_args = array(
'post_type' => 'post',
'post_status' => 'publish',
'paged' => $_POST['page'],
'posts_per_page' => 3,
);
在这两种情况下都有效。