Wordpress:列表作者

时间:2009-12-29 21:54:36

标签: wordpress themes

我希望wordpress给我一个包含所有作者的数组。有一些愚蠢的函数,它们回显html(wp_list_authors()) - 但这不是我想要的。

我想获得完整的个人资料(ID,姓名,元数据)。

我目前的方法不是,我正在寻找 - 确切地说,它是**。

$authors = wp_list_authors(array(
'optioncount'   => false, 
'exclude_admin' => false, 
'show_fullname' => false,
'hide_empty'    => false,
'echo'          => false,
'html'      => false)
);
$authors = explode(", ", $authors);

即使在这里,我也被困住了,因为没有get_author_id_by_name()或类似的东西。

请帮助,我不想在friggin模板中执行SQL。

4 个答案:

答案 0 :(得分:1)

好吧,如果您知道用户ID,则可以使用get_userdata

否则你应该看一下这个建议: http://wpengineer.com/list-all-users-in-wordpress/

答案 1 :(得分:1)

如果有人仍然在寻找,这就是你如何以正确的方式将作者以数组的形式返回。

function get_all_authors() {
global $wpdb;

foreach ( $wpdb->get_results("SELECT DISTINCT post_author, COUNT(ID) AS count FROM $wpdb->posts WHERE post_type = 'post' AND " . get_private_posts_cap_sql( 'post' ) . " GROUP BY post_author") as $row ) :
    $author = get_userdata( $row->post_author );
    $authors[$row->post_author]['name'] = $author->display_name;
    $authors[$row->post_author]['post_count'] = $row->count;
    $authors[$row->post_author]['posts_url'] = get_author_posts_url( $author->ID, $author->user_nicename );
endforeach;

return $authors;
}

返回的数组($authors)包含用户的ID作为键,还包含作者链接,帖子计数及其名称。当然,在您的主题视图中,您可以将get_all_authors()设置为变量,然后根据您的喜好循环。

希望这有帮助!

答案 2 :(得分:0)

您最好使用get_users,它位于codex

答案 3 :(得分:-1)

global $wpdb;
$allAuthorIds = $wpdb->get_column( "SELECT ID FROM {$wpdb->users}" );
$authorsInfo = array();
foreach( $allAuthorIds as $authorId ) {
  $authorsInfo[$authorId] = get_userdata($authorId);
}

这将为$ authorsInfo数组中的每个用户(包括WP扩展信息)提供信息。如果您需要按用户角色(“作者”)获取用户,那么您应该使用WP_User_Search类。你几乎被迫在这里使用SQL而且没有任何问题。