WordPress.org

Make WordPress Core

Changeset 15620


Ignore:
Timestamp:
09/15/2010 07:52:25 PM (8 years ago)
Author:
scribu
Message:

Clean up wp_list_authors(). See #10329

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/author-template.php

    r15567 r15620  
    258258 * <li>style (string) ('list'): Whether to display list of authors in list form
    259259 * or as a string.</li>
    260  * <li>html (bool) (true): Whether to list the items in html for or plaintext.
     260 * <li>html (bool) (true): Whether to list the items in html form or plaintext.
    261261 * </li>
    262262 * </ul>
     
    271271
    272272    $defaults = array(
     273        'orderby' => 'name', 'order' => 'ASC', 'number' => '',
    273274        'optioncount' => false, 'exclude_admin' => true,
    274275        'show_fullname' => false, 'hide_empty' => true,
     
    277278    );
    278279
    279     $r = wp_parse_args( $args, $defaults );
    280     extract($r, EXTR_SKIP);
     280    $args = wp_parse_args( $args, $defaults );
     281    extract( $args, EXTR_SKIP );
     282
    281283    $return = '';
    282284
    283     /** @todo Move select to get_authors(). */
    284     $users = get_users();
    285     $author_ids = array();
    286     foreach ( (array) $users as $user )
    287         $author_ids[] = $user->user_id;
    288     if ( count($author_ids) > 0  ) {
    289         $author_ids = implode(',', $author_ids );
    290         $authors = $wpdb->get_results( "SELECT ID, user_nicename from $wpdb->users WHERE ID IN($author_ids) " . ($exclude_admin ? "AND user_login <> 'admin' " : '') . "ORDER BY display_name" );
    291     } else {
    292         $authors = array();
    293     }
     285    $authors = get_users( wp_array_slice_assoc( $args, array( 'orderby', 'order', 'number' ) ) );
    294286
    295287    $author_count = array();
     
    297289        $author_count[$row->post_author] = $row->count;
    298290
    299     foreach ( (array) $authors as $author ) {
     291    foreach ( $authors as $author ) {
     292
     293        if ( $exclude_admin && 'admin' == $author->display_name )
     294            continue;
     295
     296        $posts = isset( $author_count[$author->ID] ) ? $author_count[$author->ID] : 0;
     297
     298        if ( !$posts && $hide_empty )
     299            continue;
    300300
    301301        $link = '';
    302302
    303         $author = get_userdata( $author->ID );
    304         $posts = (isset($author_count[$author->ID])) ? $author_count[$author->ID] : 0;
    305         $name = $author->display_name;
    306 
    307         if ( $show_fullname && ($author->first_name != '' && $author->last_name != '') )
     303        if ( $show_fullname && $author->first_name && $author->last_name )
    308304            $name = "$author->first_name $author->last_name";
    309 
    310         if( !$html ) {
    311             if ( $posts == 0 ) {
    312                 if ( ! $hide_empty )
    313                     $return .= $name . ', ';
    314             } else
    315                 $return .= $name . ', ';
    316 
    317             // No need to go further to process HTML.
    318             continue;
     305        else
     306            $name = $author->display_name;
     307
     308        if ( !$html ) {
     309            $return .= $name . ', ';
     310
     311            continue; // No need to go further to process HTML.
    319312        }
    320313
    321         if ( !($posts == 0 && $hide_empty) && 'list' == $style )
     314        if ( 'list' == $style ) {
    322315            $return .= '<li>';
    323         if ( $posts == 0 ) {
    324             if ( ! $hide_empty )
    325                 $link = $name;
    326         } else {
    327             $link = '<a href="' . get_author_posts_url($author->ID, $author->user_nicename) . '" title="' . esc_attr( sprintf(__("Posts by %s"), $author->display_name) ) . '">' . $name . '</a>';
    328 
    329             if ( (! empty($feed_image)) || (! empty($feed)) ) {
    330                 $link .= ' ';
    331                 if (empty($feed_image))
    332                     $link .= '(';
    333                 $link .= '<a href="' . get_author_feed_link($author->ID) . '"';
    334 
    335                 if ( !empty($feed) ) {
    336                     $title = ' title="' . esc_attr($feed) . '"';
    337                     $alt = ' alt="' . esc_attr($feed) . '"';
    338                     $name = $feed;
    339                     $link .= $title;
    340                 }
    341 
    342                 $link .= '>';
    343 
    344                 if ( !empty($feed_image) )
    345                     $link .= "<img src=\"" . esc_url($feed_image) . "\" style=\"border: none;\"$alt$title" . ' />';
    346                 else
    347                     $link .= $name;
    348 
    349                 $link .= '</a>';
    350 
    351                 if ( empty($feed_image) )
    352                     $link .= ')';
     316        }
     317
     318        $link = '<a href="' . get_author_posts_url( $author->ID, $author->user_nicename ) . '" title="' . esc_attr( sprintf(__("Posts by %s"), $author->display_name) ) . '">' . $name . '</a>';
     319
     320        if ( !empty( $feed_image ) || !empty( $feed ) ) {
     321            $link .= ' ';
     322            if ( empty( $feed_image ) ) {
     323                $link .= '(';
    353324            }
    354325
    355             if ( $optioncount )
    356                 $link .= ' ('. $posts . ')';
    357 
     326            $link .= '<a href="' . get_author_feed_link( $author->ID ) . '"';
     327
     328            $alt = $title = '';
     329            if ( !empty( $feed ) ) {
     330                $title = ' title="' . esc_attr( $feed ) . '"';
     331                $alt = ' alt="' . esc_attr( $feed ) . '"';
     332                $name = $feed;
     333                $link .= $title;
     334            }
     335
     336            $link .= '>';
     337
     338            if ( !empty( $feed_image ) )
     339                $link .= '<img src="' . esc_url( $feed_image ) . '" style="border: none;"' . $alt . $title . ' />';
     340            else
     341                $link .= $name;
     342
     343            $link .= '</a>';
     344
     345            if ( empty( $feed_image ) )
     346                $link .= ')';
    358347        }
    359348
    360         if ( $posts || ! $hide_empty )
    361             $return .= $link . ( ( 'list' == $style ) ? '</li>' : ', ' );
     349        if ( $optioncount )
     350            $link .= ' ('. $posts . ')';
     351
     352        $return .= $link;
     353        $return .= ( 'list' == $style ) ? '</li>' : ', ';
    362354    }
    363355
    364     $return = trim($return, ', ');
    365 
    366     if ( ! $echo )
     356    $return = rtrim($return, ', ');
     357
     358    if ( !$echo )
    367359        return $return;
     360
    368361    echo $return;
    369362}
Note: See TracChangeset for help on using the changeset viewer.