实现方法非常简单,除了复制代码外,只需要改三个标签和你自己的主题对应上就可以了,需要标注的地方我已经写上了。
首先改装一下你的评分翻页,在父容器上加一个html5的data-*方便获取文章id
<nav class="commentnav" data-post-id="<?php echo $post->ID?>"> <?php paginate_comments_links('prev_text=«&next_text=»');?> </nav>
下面的代码扔到functions.php中,注意修改callback函数名
wp_enqueue_script( 'base', true); wp_localize_script('base', 'bigfa_Ajax_Url', array("um_ajaxurl" => admin_url('admin-ajax.php'))); add_action('wp_ajax_nopriv_ajax_comment_page_nav', 'ajax_comment_page_nav'); add_action('wp_ajax_ajax_comment_page_nav', 'ajax_comment_page_nav'); function ajax_comment_page_nav(){ global $post,$wp_query, $wp_rewrite; $postid = $_POST["um_post"]; $pageid = $_POST["um_page"]; $comments = get_comments('post_id='.$postid); $post = get_post($postid); if( 'desc' != get_option('comment_order') ){ $comments = array_reverse($comments); } $wp_query->is_singular = true; $baseLink = ''; if ($wp_rewrite->using_permalinks()) { $baseLink = '&base=' . user_trailingslashit(get_permalink($postid) . 'comment-page-%#%', 'commentpaged'); } echo '<ol class="commentlist">'; wp_list_comments('callback=mycomment&page=' . $pageid . '&per_page=' . get_option('comments_per_page'), $comments);//注意修改mycomment这个callback echo '</ol>'; echo '<nav class="commentnav" data-post-id="'.$postid.'">'; paginate_comments_links('current=' . $pageid . '&prev_text=«&next_text=»'); echo '</nav>'; die; }
放到你的JS文件中,把两个标签名对上就OK了。
$(document).on("click", ".commentnav a",//评论翻页标签名 function() { var baseUrl = $(this).attr("href"), commentsHolder = $(".commentshow"),//评论内容容器名,要包住评论内容和分页菜单 id = $(this).parent().data("post-id"), page = 1, concelLink = $("#cancel-comment-reply-link"); /comment-page-/i.test(baseUrl) ? page = baseUrl.split(/comment-page-/i)[1].split(/(/|#|&).*$/)[0] : /cpage=/i.test(baseUrl) && (page = baseUrl.split(/cpage=/)[1].split(/(/|#|&).*$/)[0]); concelLink.click(); var ajax_data = { action: "ajax_comment_page_nav", um_post: id, um_page: page }; commentsHolder.html('<div id="JSloading">loading..</div>') $.post(bigfa_Ajax_Url.um_ajaxurl, ajax_data, function(data) { commentsHolder.html(data); $("body, html").animate({ scrollTop: commentsHolder.offset().top - 50 }, 1e3) }); return false; }) })
搞定。