问题描述
有没有一个简单的方法来分页来自 $ wpdb-> get_results() 的结果集?
我想在 author_archive 页面上获取用户评论的分页列表 – 社区的一些用户具有> 500 评论,所以分页是重要的。
有没有一个 in-built 这样做与 WordPress 的方式,还是我需要自己建立?
[更新添加代码]
<!-- Show comments -->
<?php
$querystr = "
SELECT comment_ID, comment_post_ID, post_title, LEFT(comment_content,100) as comment_content, comment_date_gmt
FROM $wpdb->comments, $wpdb->posts
WHERE user_id = $thisauthor->ID
AND comment_post_id = ID
AND comment_approved = 1
ORDER BY comment_ID DESC
LIMIT 100
";
$comments_array = $wpdb->get_results($querystr, OBJECT);
if ($comments_array): ?>
<div id="author-comments-list">
<h2>Recent Comments </h2>
<ul>
<?
$odd_even = "odd";
foreach ($comments_array as $comment):
echo "<li class='$odd_even'><a href='". get_bloginfo('url') ."/?p=".$comment->comment_post_ID."/#comment-". $comment->comment_ID ."'>". $comment->post_title ."</a> : ".mysql2date('l jS F, Y, g:ia',$comment->comment_date_gmt);
echo "<div class='author-comments-content'>".$comment->comment_content."</li>";
$odd_even = ($odd_even == "odd" ? "even" : "odd");
endforeach; ?>
</ul>
</div>
<? endif; ?>
最佳解决方案
您可以使用功能 paginate_links()进行任何分页。
对于您的具体情况:
$total = $wpdb->get_var("
SELECT COUNT(comment_ID)
FROM $wpdb->comments
WHERE user_id = $thisauthor->ID
AND comment_post_id = ID
AND comment_approved = 1
");
$comments_per_page = 100;
$page = isset( $_GET['cpage'] ) ? abs( (int) $_GET['cpage'] ) : 1;
echo paginate_links( array(
'base' => add_query_arg( 'cpage', '%#%' ),
'format' => '',
'prev_text' => __('«'),
'next_text' => __('»'),
'total' => ceil($total / $comments_per_page),
'current' => $page
));
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。