作者列出分页:来自$wpdb->GET_RESULTS()的结果集

时间:2010-11-21 作者:syed

使用此解决方案:Paginate result set from $wpdb->get_results()

我确实为作者列表页面模板编写了代码,如下所示:

<div>    
<table id="mytable"><tbody>

<?php
 // Get the authors from the database ordered by user\'s display name
 global $wpdb;
 $query = "SELECT ID, display_name from $wpdb->users ORDER BY display_name LIMIT 10";
 $author_ids = $wpdb->get_results($query);
$authcount = -1;

$total = $wpdb->get_var("
    SELECT COUNT(ID)
    FROM $wpdb->users
");
$authors_per_page = 10;
$page = isset( $_GET[\'cpage\'] ) ? abs( (int) $_GET[\'cpage\'] ) : 1;

echo paginate_links( array(
    \'base\' => add_query_arg( \'cpage\', \'%#%\' ),
    \'format\' => \'\',
    \'prev_text\' => __(\'&laquo;\'),
    \'next_text\' => __(\'&raquo;\'),
    \'total\' => ceil($total / $authors_per_page),
    \'current\' => $page
));

 // Loop through each author
 foreach($author_ids as $author) :
 // Get user data
 $curauth = get_userdata($author->ID);

 // If user_ID is 1 or 24, remove them from list
 if( ! in_array($curauth->ID, array(1, 24 )) ) :
 // Get link to author page
 $user_link = get_author_posts_url($curauth->ID);
    $post_count = get_usernumposts($curauth->ID);
 ?>
<tr<?php echo $authcount % 2 ? \' class="odd"\' : \'\'; ?>>
<td>
<?php echo $authcount; ?>
</td><th scope="row">
<a href="<?php echo $user_link; ?>" title="<?php echo $curauth->display_name; ?>"><?php echo $curauth->display_name; ?></a>
</th><td>
( <?php echo $post_count; ?> )
</td></tr>

<?php endif; ?>
<?php $authcount = $authcount + 1; ?>
<?php endforeach; ?>

</tbody></table><br /></div>
但每个页码链接只显示从1到10的作者列表,而数据库中至少有50位作者。请帮我找出错误并改正。非常感谢。

3 个回复
SO网友:edelwater

您的查询是

"SELECT ID, display_name from $wpdb->users ORDER BY display_name **LIMIT 10**";
此Sql语句请求前10位作者

SO网友:hakre

就像雪绒水已经写过的那样,您缺少为您的需求正确指定限制条款:

LIMIT子句可用于约束SELECT语句返回的行数。LIMIT接受一个或两个数值参数,这两个参数都必须是非负整数常量(除非使用准备好的语句)。

对于两个参数,第一个参数指定要返回的第一行的偏移量,第二个参数指定要返回的最大行数。初始行的偏移量为0(不是1):

12.2.8. SELECT Syntax (MySQL Manual)

所以对于基于1的$page 数字,它是(字面上)LIMIT ($page-1) * $pagesize, $pagesize 哪里$pagesize 你的情况是10。

SO网友:Sam K

我编写了一个解决方案,通过修改WP\\u LIST\\u AUTHORS函数将一些分页代码拼凑在一起。它似乎需要一个缓存插件,否则这个页面加载速度会很慢,但它确实可以工作。

代码及其格式的进一步讨论位于以下线程中:Modifying WP_LIST_AUTHOR Functions to output all users in a grid (and Paginate)

希望有帮助!

PS—如果您只想查看一个具有分页限制和偏移量的正确格式的SQL查询,可以转到这里:http://www.phpfreaks.com/tutorial/basic-pagination

结束

相关推荐

列出作者的类别:LIST_CATEGORIES函数中的LIST_AUTHERS函数

我正在尝试制作一个“贡献者”页面,其中有作者列表和他们发布的类别。我可以使用此代码在单个帖子页面上为单个作者执行此操作: <?php $cat_array = array(); $args=array( \'author\' => get_the_author_meta(\'id\'), \'showposts\'=>-1, \'caller_get_posts\'=>1 )