微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript-WordPress类别发布AJAX分页

我真的很难找到一种方法来为我的wordpress帖子创建使用ajax的分页.我发现的解决方案不起作用.

为了在此提供更多信息,下面是一个链接,该链接底部带有用于项目符号的项目符号.单击这些后,我希望网站的效果加载新帖子而不触发页面刷新.
http://maxlynn.co.uk/natural-interaction/category/all/

我的问题是,对于这种效果,是否有任何好的教程可能对您有所帮助.

如果您需要更多信息,请与我们联系.

******更新****

function kriesi_pagination($pages = '', $range = 2) {
 $showitems = ($range * 2)+1;

 global $paged;
 if (empty($paged)) $paged = 1;

 if ($pages == '') {
     global $wp_query;
     $pages = $wp_query->max_num_pages;
     if (!$pages) {
         $pages = 1;
     }
 }

 if (1 != $pages) {
     echo "<div class='pagination'><div class='pagination-container'>";
     if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a href='".get_pagenum_link(1)."'>&laquo;</a>";
     if($paged > 1 && $showitems < $pages) echo "<a href='".get_pagenum_link($paged - 1)."'>&lsaquo;</a>";

     for ($i=1; $i <= $pages; $i++) {
         if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems ))
         {
             echo ($paged == $i)? "<span class='current'>".$i."</span>":"<a href='".get_pagenum_link($i)."' class='inactive' >".$i."</a>";
         }
     }

     if ($paged < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($paged + 1)."'>&rsaquo;</a>";
     if ($paged < $pages-1 &&  $paged+$range-1 < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($pages)."'>&raquo;</a>";
     echo "</div>\n</div>\n";
 }

}

这是我正在使用的PHP,如何使用此PHP创建ajax请求,以使页面不会重新加载?

解决方法:

您需要做的是防止分页链接上的认设置,并发送AJAX请求以获取帖子. wordpress以这种方式用于AJAX:您将所有请求发送到带有操作参数的wp-admin / admin-ajax.PHP,该参数将使用wp_ajax_nopriv_my_action和wp_ajax_my_action钩子识别该请求,以便将其捕获到functions.PHP中.

因此,基本上,您将在模板文件中执行此操作:

<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' );

事情是查询所请求页面的帖子(因此我们从页码和每页帖子数量计算偏移量),并使用用于单个帖子的模板显示它们.

您可能还需要操纵浏览器历史记录,为此,您应该选中the History API.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐