您需要做的是防止分页链接上的默认设置,并发送AJAX请求以获取帖子。WordPress以这种方式用于AJAX:您将所有请求发送到
wp-admin/admin-ajax.php一个
action参数,该参数将标识请求,以便使用and 钩子将其捕获到 functions.php中
。
wp_ajax_nopriv_my_action``wp_ajax_my_action
因此,基本上,您将在模板文件中执行此 *** 作:
<script type="text/javascript"> jQuery(document).ready(function($) { $('.pagination a').click(function(e) { e.preventDefault(); // don't trigger page reload if($(this).hasClass('active')) { return; // don't do anything if click on current page } $.post( '<?php echo admin_url('admin-ajax.php'); ?>', // get admin-ajax.php url { action: 'ajax_pagination', page: parseInt($(this).attr('data-page')), // get page number for "data-page" attribute posts_per_page: <?php echo get_option('posts_per_page'); ?> }, function(data) { $('#content-posts').html(data); // replace posts with new one } }); }); });</script>
您必须根据模板来更改类名称/属性等。
而在 functions.php 方面:
function my_ajax_navigation() { $requested_page = intval($_POST['page']); $posts_per_page = intval($_POST['posts_per_page']) - 1; $posts = get_posts(array( 'posts_per_page' => $posts_per_page, 'offset' => $page * $posts_per_page )); foreach ($posts as $post) { setup_postdata( $post ); // DISPLAY POST HERE // good thing to do would be to include your post template } exit;}add_action( 'wp_ajax_ajax_pagination', 'my_ajax_navigation' );add_action( 'wp_ajax_nopriv_ajax_paginationr', 'my_ajax_navigation' );
问题是查询所请求页面的帖子(以便我们计算页码和每页帖子选项的偏移量),并使用用于单个帖子的模板显示它们。
您可能还需要 *** 纵浏览器历史记录,为此,您应该检查一下History API。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)