[ Index ]

PHP Cross Reference of WordPress (Trunk)

title

Body

[close]

/wp-includes/ -> author-template.php (source)

   1  <?php
   2  /**
   3   * Author Template functions for use in themes.
   4   *
   5   * These functions must be used within the WordPress Loop.
   6   *
   7   * @link http://codex.wordpress.org/Author_Templates
   8   *
   9   * @package WordPress
  10   * @subpackage Template
  11   */
  12  
  13  /**
  14   * Retrieve the author of the current post.
  15   *
  16   * @since 1.5
  17   * @uses $authordata The current author's DB object.
  18   * @uses apply_filters() Calls 'the_author' hook on the author display name.
  19   *
  20   * @param string $deprecated Deprecated.
  21   * @return string The author's display name.
  22   */
  23  function get_the_author($deprecated = '') {
  24      global $authordata;
  25  
  26      if ( !empty( $deprecated ) )
  27          _deprecated_argument( __FUNCTION__, '2.1' );
  28  
  29      return apply_filters('the_author', is_object($authordata) ? $authordata->display_name : null);
  30  }
  31  
  32  /**
  33   * Display the name of the author of the current post.
  34   *
  35   * The behavior of this function is based off of old functionality predating
  36   * get_the_author(). This function is not deprecated, but is designed to echo
  37   * the value from get_the_author() and as an result of any old theme that might
  38   * still use the old behavior will also pass the value from get_the_author().
  39   *
  40   * The normal, expected behavior of this function is to echo the author and not
  41   * return it. However, backwards compatiability has to be maintained.
  42   *
  43   * @since 0.71
  44   * @see get_the_author()
  45   * @link http://codex.wordpress.org/Template_Tags/the_author
  46   *
  47   * @param string $deprecated Deprecated.
  48   * @param string $deprecated_echo Deprecated. Use get_the_author(). Echo the string or return it.
  49   * @return string The author's display name, from get_the_author().
  50   */
  51  function the_author( $deprecated = '', $deprecated_echo = true ) {
  52      if ( !empty( $deprecated ) )
  53          _deprecated_argument( __FUNCTION__, '2.1' );
  54      if ( $deprecated_echo !== true )
  55          _deprecated_argument( __FUNCTION__, '1.5', __('Use <code>get_the_author()</code> instead if you do not want the value echoed.') );
  56      if ( $deprecated_echo )
  57          echo get_the_author();
  58      return get_the_author();
  59  }
  60  
  61  /**
  62   * Retrieve the author who last edited the current post.
  63   *
  64   * @since 2.8
  65   * @uses $post The current post's DB object.
  66   * @uses get_post_meta() Retrieves the ID of the author who last edited the current post.
  67   * @uses get_userdata() Retrieves the author's DB object.
  68   * @uses apply_filters() Calls 'the_modified_author' hook on the author display name.
  69   * @return string The author's display name.
  70   */
  71  function get_the_modified_author() {
  72      global $post;
  73      if ( $last_id = get_post_meta($post->ID, '_edit_last', true) ) {
  74          $last_user = get_userdata($last_id);
  75          return apply_filters('the_modified_author', $last_user->display_name);
  76      }
  77  }
  78  
  79  /**
  80   * Display the name of the author who last edited the current post.
  81   *
  82   * @since 2.8
  83   * @see get_the_author()
  84   * @return string The author's display name, from get_the_modified_author().
  85   */
  86  function the_modified_author() {
  87      echo get_the_modified_author();
  88  }
  89  
  90  /**
  91   * Retrieve the requested data of the author of the current post.
  92   * @link http://codex.wordpress.org/Template_Tags/the_author_meta
  93   * @since 2.8.0
  94   * @uses $authordata The current author's DB object (if $user_id not specified).
  95   * @param string $field selects the field of the users record.
  96   * @param int $user_id Optional. User ID.
  97   * @return string The author's field from the current author's DB object.
  98   */
  99  function get_the_author_meta($field = '', $user_id = false) {
 100      if ( ! $user_id )
 101          global $authordata;
 102      else
 103          $authordata = get_userdata( $user_id );
 104  
 105      $field = strtolower($field);
 106      $user_field = "user_$field";
 107  
 108      if ( 'id' == $field )
 109          $value = isset($authordata->ID) ? (int)$authordata->ID : 0;
 110      elseif ( isset($authordata->$user_field) )
 111          $value = $authordata->$user_field;
 112      else
 113          $value = isset($authordata->$field) ? $authordata->$field : '';
 114  
 115      return apply_filters('get_the_author_' . $field, $value, $user_id);
 116  }
 117  
 118  /**
 119   * Retrieve the requested data of the author of the current post.
 120   * @link http://codex.wordpress.org/Template_Tags/the_author_meta
 121   * @since 2.8.0
 122   * @param string $field selects the field of the users record.
 123   * @param int $user_id Optional. User ID.
 124   * @echo string The author's field from the current author's DB object.
 125   */
 126  function the_author_meta($field = '', $user_id = false) {
 127      echo apply_filters('the_author_' . $field, get_the_author_meta($field, $user_id), $user_id);
 128  }
 129  
 130  /**
 131   * Retrieve either author's link or author's name.
 132   *
 133   * If the author has a home page set, return an HTML link, otherwise just return the
 134   * author's name.
 135   *
 136   * @uses get_the_author_meta()
 137   * @uses get_the_author()
 138   */
 139  function get_the_author_link() {
 140      if ( get_the_author_meta('url') ) {
 141          return '<a href="' . get_the_author_meta('url') . '" title="' . esc_attr( sprintf(__("Visit %s&#8217;s website"), get_the_author()) ) . '" rel="external">' . get_the_author() . '</a>';
 142      } else {
 143          return get_the_author();
 144      }
 145  }
 146  
 147  /**
 148   * Display either author's link or author's name.
 149   *
 150   * If the author has a home page set, echo an HTML link, otherwise just echo the
 151   * author's name.
 152   *
 153   * @link http://codex.wordpress.org/Template_Tags/the_author_link
 154   * @since 2.1
 155   * @uses get_the_author_link()
 156   */
 157  function the_author_link() {
 158      echo get_the_author_link();
 159  }
 160  
 161  /**
 162   * Retrieve the number of posts by the author of the current post.
 163   *
 164   * @since 1.5
 165   * @uses $post The current post in the Loop's DB object.
 166   * @uses count_user_posts()
 167   * @return int The number of posts by the author.
 168   */
 169  function get_the_author_posts() {
 170      global $post;
 171      return count_user_posts($post->post_author);
 172  }
 173  
 174  /**
 175   * Display the number of posts by the author of the current post.
 176   *
 177   * @link http://codex.wordpress.org/Template_Tags/the_author_posts
 178   * @since 0.71
 179   * @uses get_the_author_posts() Echoes returned value from function.
 180   */
 181  function the_author_posts() {
 182      echo get_the_author_posts();
 183  }
 184  
 185  /**
 186   * Display an HTML link to the author page of the author of the current post.
 187   *
 188   * Does just echo get_author_posts_url() function, like the others do. The
 189   * reason for this, is that another function is used to help in printing the
 190   * link to the author's posts.
 191   *
 192   * @link http://codex.wordpress.org/Template_Tags/the_author_posts_link
 193   * @since 1.2.0
 194   * @uses $authordata The current author's DB object.
 195   * @uses get_author_posts_url()
 196   * @uses get_the_author()
 197   * @param string $deprecated Deprecated.
 198   */
 199  function the_author_posts_link($deprecated = '') {
 200      if ( !empty( $deprecated ) )
 201          _deprecated_argument( __FUNCTION__, '2.1' );
 202  
 203      global $authordata;
 204      $link = sprintf(
 205          '<a href="%1$s" title="%2$s">%3$s</a>',
 206          get_author_posts_url( $authordata->ID, $authordata->user_nicename ),
 207          esc_attr( sprintf( __( 'Posts by %s' ), get_the_author() ) ),
 208          get_the_author()
 209      );
 210      echo apply_filters( 'the_author_posts_link', $link );
 211  }
 212  
 213  /**
 214   * Retrieve the URL to the author page of the author of the current post.
 215   *
 216   * @since 2.1.0
 217   * @uses $wp_rewrite WP_Rewrite
 218   * @return string The URL to the author's page.
 219   */
 220  function get_author_posts_url($author_id, $author_nicename = '') {
 221      global $wp_rewrite;
 222      $auth_ID = (int) $author_id;
 223      $link = $wp_rewrite->get_author_permastruct();
 224  
 225      if ( empty($link) ) {
 226          $file = home_url() . '/';
 227          $link = $file . '?author=' . $auth_ID;
 228      } else {
 229          if ( '' == $author_nicename ) {
 230              $user = get_userdata($author_id);
 231              if ( !empty($user->user_nicename) )
 232                  $author_nicename = $user->user_nicename;
 233          }
 234          $link = str_replace('%author%', $author_nicename, $link);
 235          $link = home_url() . trailingslashit($link);
 236      }
 237  
 238      $link = apply_filters('author_link', $link, $author_id, $author_nicename);
 239  
 240      return $link;
 241  }
 242  
 243  /**
 244   * List all the authors of the blog, with several options available.
 245   *
 246   * <ul>
 247   * <li>optioncount (boolean) (false): Show the count in parenthesis next to the
 248   * author's name.</li>
 249   * <li>exclude_admin (boolean) (true): Exclude the 'admin' user that is
 250   * installed bydefault.</li>
 251   * <li>show_fullname (boolean) (false): Show their full names.</li>
 252   * <li>hide_empty (boolean) (true): Don't show authors without any posts.</li>
 253   * <li>feed (string) (''): If isn't empty, show links to author's feeds.</li>
 254   * <li>feed_image (string) (''): If isn't empty, use this image to link to
 255   * feeds.</li>
 256   * <li>echo (boolean) (true): Set to false to return the output, instead of
 257   * echoing.</li>
 258   * <li>style (string) ('list'): Whether to display list of authors in list form
 259   * or as a string.</li>
 260   * <li>html (bool) (true): Whether to list the items in html for or plaintext.
 261   * </li>
 262   * </ul>
 263   *
 264   * @link http://codex.wordpress.org/Template_Tags/wp_list_authors
 265   * @since 1.2.0
 266   * @param array $args The argument array.
 267   * @return null|string The output, if echo is set to false.
 268   */
 269  function wp_list_authors($args = '') {
 270      global $wpdb;
 271  
 272      $defaults = array(
 273          'optioncount' => false, 'exclude_admin' => true,
 274          'show_fullname' => false, 'hide_empty' => true,
 275          'feed' => '', 'feed_image' => '', 'feed_type' => '', 'echo' => true,
 276          'style' => 'list', 'html' => true
 277      );
 278  
 279      $r = wp_parse_args( $args, $defaults );
 280      extract($r, EXTR_SKIP);
 281      $return = '';
 282  
 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      }
 294  
 295      $author_count = array();
 296      foreach ( (array) $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 )
 297          $author_count[$row->post_author] = $row->count;
 298  
 299      foreach ( (array) $authors as $author ) {
 300  
 301          $link = '';
 302  
 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 != '') )
 308              $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;
 319          }
 320  
 321          if ( !($posts == 0 && $hide_empty) && 'list' == $style )
 322              $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 .= ')';
 353              }
 354  
 355              if ( $optioncount )
 356                  $link .= ' ('. $posts . ')';
 357  
 358          }
 359  
 360          if ( $posts || ! $hide_empty )
 361              $return .= $link . ( ( 'list' == $style ) ? '</li>' : ', ' );
 362      }
 363  
 364      $return = trim($return, ', ');
 365  
 366      if ( ! $echo )
 367          return $return;
 368      echo $return;
 369  }
 370  
 371  ?>


Generated: Tue Sep 7 03:37:17 2010 Cross-referenced by PHPXref 0.7