2004-01-27 09:58:01 +00:00
<? php
2007-12-16 23:47:58 +00:00
/**
* Author Template functions for use in themes.
*
2008-05-25 15:45:05 +00:00
* These functions must be used within the WordPress Loop.
*
2015-04-12 21:29:32 +00:00
* @link https://codex.wordpress.org/Author_Templates
2008-05-25 15:45:05 +00:00
*
2007-12-16 23:47:58 +00:00
* @package WordPress
* @subpackage Template
*/
2005-06-12 23:22:06 +00:00
2007-06-02 03:04:01 +00:00
/**
2008-05-25 15:45:05 +00:00
* Retrieve the author of the current post.
2007-12-16 23:47:58 +00:00
*
2013-12-24 18:57:12 +00:00
* @since 1.5.0
*
2015-05-22 04:14:24 +00:00
* @global object $authordata The current author's DB object.
2007-12-16 23:47:58 +00:00
*
2007-06-02 03:04:01 +00:00
* @param string $deprecated Deprecated.
2015-05-21 20:10:26 +00:00
* @return string|null The author's display name.
2007-06-02 03:04:01 +00:00
*/
2017-11-30 23:11:00 +00:00
function get_the_author ( $deprecated = '' ) {
2005-10-12 17:01:50 +00:00
global $authordata ;
2009-12-30 16:23:39 +00:00
2017-11-30 23:11:00 +00:00
if ( ! empty ( $deprecated ) ) {
2016-07-06 12:40:29 +00:00
_deprecated_argument ( __FUNCTION__ , '2.1.0' );
2017-11-30 23:11:00 +00:00
}
2009-12-30 16:23:39 +00:00
2013-09-13 19:25:10 +00:00
/**
2016-05-22 18:25:26 +00:00
* Filters the display name of the current post's author.
2013-09-13 19:25:10 +00:00
*
* @since 2.9.0
*
* @param string $authordata->display_name The author's display name.
*/
2017-11-30 23:11:00 +00:00
return apply_filters ( 'the_author' , is_object ( $authordata ) ? $authordata -> display_name : null );
2004-01-27 09:58:01 +00:00
}
2005-06-12 23:22:06 +00:00
2007-06-02 03:04:01 +00:00
/**
2008-05-25 15:45:05 +00:00
* Display the name of the author of the current post.
2007-12-16 23:47:58 +00:00
*
2008-05-25 15:45:05 +00:00
* The behavior of this function is based off of old functionality predating
* get_the_author(). This function is not deprecated, but is designed to echo
* the value from get_the_author() and as an result of any old theme that might
* still use the old behavior will also pass the value from get_the_author().
2007-12-28 21:19:44 +00:00
*
2008-05-25 15:45:05 +00:00
* The normal, expected behavior of this function is to echo the author and not
2016-05-13 18:41:31 +00:00
* return it. However, backward compatibility has to be maintained.
2007-12-28 21:19:44 +00:00
*
2007-12-16 23:47:58 +00:00
* @since 0.71
2007-06-02 03:04:01 +00:00
* @see get_the_author()
2015-04-12 21:29:32 +00:00
* @link https://codex.wordpress.org/Template_Tags/the_author
2007-12-16 23:47:58 +00:00
*
2019-04-01 14:23:53 +00:00
* @param string $deprecated Deprecated.
* @param bool $deprecated_echo Deprecated. Use get_the_author(). Echo the string or return it.
2015-05-21 20:10:26 +00:00
* @return string|null The author's display name, from get_the_author().
2007-06-02 03:04:01 +00:00
*/
2009-12-30 16:23:39 +00:00
function the_author ( $deprecated = '' , $deprecated_echo = true ) {
2015-11-05 23:38:27 +00:00
if ( ! empty ( $deprecated ) ) {
2016-07-06 12:40:29 +00:00
_deprecated_argument ( __FUNCTION__ , '2.1.0' );
2015-11-05 23:38:27 +00:00
}
if ( true !== $deprecated_echo ) {
2017-11-30 23:11:00 +00:00
_deprecated_argument (
2018-08-17 01:51:36 +00:00
__FUNCTION__ ,
'1.5.0' ,
2015-11-05 23:38:27 +00:00
/* translators: %s: get_the_author() */
2017-11-30 23:11:00 +00:00
sprintf (
__ ( 'Use %s instead if you do not want the value echoed.' ),
2015-11-05 23:38:27 +00:00
'<code>get_the_author()</code>'
)
);
}
if ( $deprecated_echo ) {
2006-08-31 05:07:12 +00:00
echo get_the_author ();
2015-11-05 23:38:27 +00:00
}
2006-08-31 05:07:12 +00:00
return get_the_author ();
2004-12-15 23:15:17 +00:00
}
2009-02-27 17:54:47 +00:00
/**
* Retrieve the author who last edited the current post.
*
2013-12-24 18:57:12 +00:00
* @since 2.8.0
*
2015-05-24 05:40:25 +00:00
* @return string|void The author's display name.
2009-02-27 17:54:47 +00:00
*/
function get_the_modified_author () {
2019-01-08 05:50:49 +00:00
$last_id = get_post_meta ( get_post () -> ID , '_edit_last' , true );
if ( $last_id ) {
2017-11-30 23:11:00 +00:00
$last_user = get_userdata ( $last_id );
2013-09-13 19:25:10 +00:00
/**
2016-05-22 18:25:26 +00:00
* Filters the display name of the author who last edited the current post.
2013-09-13 19:25:10 +00:00
*
* @since 2.8.0
*
* @param string $last_user->display_name The author's display name.
*/
2017-11-30 23:11:00 +00:00
return apply_filters ( 'the_modified_author' , $last_user -> display_name );
2009-02-27 17:54:47 +00:00
}
}
/**
2015-05-21 20:10:26 +00:00
* Display the name of the author who last edited the current post,
* if the author's ID is available.
2009-02-27 17:54:47 +00:00
*
2013-12-24 18:57:12 +00:00
* @since 2.8.0
*
2009-02-27 17:54:47 +00:00
* @see get_the_author()
*/
function the_modified_author () {
echo get_the_modified_author ();
}
2007-06-02 03:04:01 +00:00
/**
2017-06-26 18:24:40 +00:00
* Retrieves the requested data of the author of the current post.
*
* Valid values for the `$field` parameter include:
*
* - admin_color
* - aim
* - comment_shortcuts
* - description
* - display_name
* - first_name
* - ID
* - jabber
* - last_name
* - nickname
* - plugins_last_view
* - plugins_per_page
* - rich_editing
2017-09-13 06:08:47 +00:00
* - syntax_highlighting
2017-06-26 18:24:40 +00:00
* - user_activation_key
* - user_description
* - user_email
* - user_firstname
* - user_lastname
* - user_level
* - user_login
* - user_nicename
* - user_pass
* - user_registered
* - user_status
* - user_url
* - yim
*
2009-05-24 23:47:49 +00:00
* @since 2.8.0
2015-05-22 04:14:24 +00:00
*
* @global object $authordata The current author's DB object.
*
2019-04-01 14:23:53 +00:00
* @param string $field Optional. The user field to retrieve. Default empty.
* @param int|false $user_id Optional. User ID.
2017-06-13 02:33:42 +00:00
* @return string The author's field from the current author's DB object, otherwise an empty string.
2007-06-02 03:04:01 +00:00
*/
2012-04-23 21:34:07 +00:00
function get_the_author_meta ( $field = '' , $user_id = false ) {
2015-05-25 13:06:25 +00:00
$original_user_id = $user_id ;
2012-04-23 21:34:07 +00:00
if ( ! $user_id ) {
2009-04-30 16:27:17 +00:00
global $authordata ;
2012-04-24 14:41:23 +00:00
$user_id = isset ( $authordata -> ID ) ? $authordata -> ID : 0 ;
2012-04-23 21:34:07 +00:00
} else {
2009-04-30 19:55:29 +00:00
$authordata = get_userdata ( $user_id );
2012-04-23 21:34:07 +00:00
}
2004-01-27 09:58:01 +00:00
2017-11-30 23:11:00 +00:00
if ( in_array ( $field , array ( 'login' , 'pass' , 'nicename' , 'email' , 'url' , 'registered' , 'activation_key' , 'status' ) ) ) {
2012-04-23 21:34:07 +00:00
$field = 'user_' . $field ;
2017-11-30 23:11:00 +00:00
}
2009-05-24 23:47:49 +00:00
2012-04-23 21:34:07 +00:00
$value = isset ( $authordata -> $field ) ? $authordata -> $field : '' ;
2007-06-02 03:04:01 +00:00
2013-09-13 19:25:10 +00:00
/**
2016-05-22 18:25:26 +00:00
* Filters the value of the requested user metadata.
2013-09-13 19:25:10 +00:00
*
* The filter name is dynamic and depends on the $field parameter of the function.
*
* @since 2.8.0
2015-05-25 13:06:25 +00:00
* @since 4.3.0 The `$original_user_id` parameter was added.
2013-09-13 19:25:10 +00:00
*
2019-04-01 14:23:53 +00:00
* @param string $value The value of the metadata.
* @param int $user_id The user ID for the value.
* @param int|false $original_user_id The original user ID, as passed to the function.
2013-09-13 19:25:10 +00:00
*/
2016-12-14 04:18:42 +00:00
return apply_filters ( "get_the_author_ { $field } " , $value , $user_id , $original_user_id );
2004-01-27 09:58:01 +00:00
}
2007-06-02 03:04:01 +00:00
/**
2015-05-22 04:14:24 +00:00
* Outputs the field from the user's DB object. Defaults to current post's author.
*
2009-05-24 23:47:49 +00:00
* @since 2.8.0
2015-05-22 04:14:24 +00:00
*
2019-04-01 14:23:53 +00:00
* @param string $field Selects the field of the users record. See get_the_author_meta()
* for the list of possible fields.
* @param int|false $user_id Optional. User ID.
2017-06-26 18:24:40 +00:00
*
* @see get_the_author_meta()
2007-06-02 03:04:01 +00:00
*/
2013-09-13 19:25:10 +00:00
function the_author_meta ( $field = '' , $user_id = false ) {
$author_meta = get_the_author_meta ( $field , $user_id );
/**
* The value of the requested user metadata.
*
* The filter name is dynamic and depends on the $field parameter of the function.
*
* @since 2.8.0
*
2019-04-01 14:23:53 +00:00
* @param string $author_meta The value of the metadata.
* @param int|false $user_id The user ID.
2013-09-13 19:25:10 +00:00
*/
2016-12-14 04:18:42 +00:00
echo apply_filters ( "the_author_ { $field } " , $author_meta , $user_id );
2004-01-27 09:58:01 +00:00
}
2010-04-07 12:26:28 +00:00
/**
* Retrieve either author's link or author's name.
*
* If the author has a home page set, return an HTML link, otherwise just return the
* author's name.
2015-05-21 20:10:26 +00:00
*
2016-12-27 09:21:44 +00:00
* @since 3.0.0
*
2015-05-21 20:10:26 +00:00
* @return string|null An HTML link if the author's url exist in user meta,
* else the result of get_the_author().
2010-04-07 12:26:28 +00:00
*/
function get_the_author_link () {
2017-11-30 23:11:00 +00:00
if ( get_the_author_meta ( 'url' ) ) {
return sprintf (
'<a href="%1$s" title="%2$s" rel="author external">%3$s</a>' ,
esc_url ( get_the_author_meta ( 'url' ) ),
2016-08-23 23:18:29 +00:00
/* translators: %s: author's display name */
esc_attr ( sprintf ( __ ( 'Visit %s’s website' ), get_the_author () ) ),
get_the_author ()
);
2010-04-07 12:26:28 +00:00
} else {
return get_the_author ();
}
}
2007-06-02 03:04:01 +00:00
/**
2008-05-25 15:45:05 +00:00
* Display either author's link or author's name.
*
* If the author has a home page set, echo an HTML link, otherwise just echo the
* author's name.
2007-12-16 23:47:58 +00:00
*
2015-04-12 21:29:32 +00:00
* @link https://codex.wordpress.org/Template_Tags/the_author_link
2013-12-24 18:57:12 +00:00
*
* @since 2.1.0
2007-06-02 03:04:01 +00:00
*/
2006-08-30 18:07:49 +00:00
function the_author_link () {
2010-04-07 12:26:28 +00:00
echo get_the_author_link ();
2006-08-30 18:07:49 +00:00
}
2007-06-02 03:04:01 +00:00
/**
2008-05-25 15:45:05 +00:00
* Retrieve the number of posts by the author of the current post.
2007-12-16 23:47:58 +00:00
*
2013-12-24 18:57:12 +00:00
* @since 1.5.0
*
2007-06-02 03:04:01 +00:00
* @return int The number of posts by the author.
*/
2004-12-15 23:15:17 +00:00
function get_the_author_posts () {
2014-05-11 00:26:14 +00:00
$post = get_post ();
if ( ! $post ) {
return 0 ;
}
2015-01-08 19:53:22 +00:00
return count_user_posts ( $post -> post_author , $post -> post_type );
2004-12-15 23:15:17 +00:00
}
2005-10-12 17:01:50 +00:00
2007-06-02 03:04:01 +00:00
/**
2008-05-25 15:45:05 +00:00
* Display the number of posts by the author of the current post.
2007-12-16 23:47:58 +00:00
*
2015-04-12 21:29:32 +00:00
* @link https://codex.wordpress.org/Template_Tags/the_author_posts
2007-12-16 23:47:58 +00:00
* @since 0.71
2007-06-02 03:04:01 +00:00
*/
2004-01-27 09:58:01 +00:00
function the_author_posts () {
2005-10-12 17:01:50 +00:00
echo get_the_author_posts ();
2004-01-27 09:58:01 +00:00
}
2007-06-02 03:04:01 +00:00
/**
2015-09-29 01:49:25 +00:00
* Retrieves an HTML link to the author page of the current post's author.
2007-12-16 23:47:58 +00:00
*
2015-09-29 01:49:25 +00:00
* Returns an HTML-formatted link using get_author_posts_url().
2007-12-16 23:47:58 +00:00
*
2015-09-29 01:49:25 +00:00
* @since 4.4.0
2015-05-21 20:10:26 +00:00
*
2015-05-22 04:14:24 +00:00
* @global object $authordata The current author's DB object.
*
2019-01-16 05:54:49 +00:00
* @return string An HTML link to the author page, or an empty string if $authordata isn't defined.
2007-06-02 03:04:01 +00:00
*/
2015-09-29 01:49:25 +00:00
function get_the_author_posts_link () {
2005-10-12 17:01:50 +00:00
global $authordata ;
2015-05-22 04:14:24 +00:00
if ( ! is_object ( $authordata ) ) {
2019-01-16 05:54:49 +00:00
return '' ;
2015-05-22 04:14:24 +00:00
}
2017-11-30 23:11:00 +00:00
$link = sprintf (
'<a href="%1$s" title="%2$s" rel="author">%3$s</a>' ,
2013-02-28 18:58:52 +00:00
esc_url ( get_author_posts_url ( $authordata -> ID , $authordata -> user_nicename ) ),
2016-08-23 23:18:29 +00:00
/* translators: %s: author's display name */
2009-08-18 16:05:07 +00:00
esc_attr ( sprintf ( __ ( 'Posts by %s' ), get_the_author () ) ),
2007-06-02 03:04:01 +00:00
get_the_author ()
);
2013-09-13 19:25:10 +00:00
/**
2016-05-22 18:25:26 +00:00
* Filters the link to the author page of the author of the current post.
2013-09-13 19:25:10 +00:00
*
* @since 2.9.0
*
* @param string $link HTML link.
*/
2015-09-29 01:49:25 +00:00
return apply_filters ( 'the_author_posts_link' , $link );
}
/**
* Displays an HTML link to the author page of the current post's author.
*
* @since 1.2.0
* @since 4.4.0 Converted into a wrapper for get_the_author_posts_link()
*
* @param string $deprecated Unused.
*/
function the_author_posts_link ( $deprecated = '' ) {
if ( ! empty ( $deprecated ) ) {
2016-07-06 12:40:29 +00:00
_deprecated_argument ( __FUNCTION__ , '2.1.0' );
2015-09-29 01:49:25 +00:00
}
echo get_the_author_posts_link ();
2007-06-02 03:04:01 +00:00
}
/**
2010-10-28 07:15:23 +00:00
* Retrieve the URL to the author page for the user with the ID provided.
2007-12-16 23:47:58 +00:00
*
2008-08-27 06:45:13 +00:00
* @since 2.1.0
2015-05-22 04:14:24 +00:00
*
* @global WP_Rewrite $wp_rewrite
*
2015-12-17 17:30:43 +00:00
* @param int $author_id Author ID.
* @param string $author_nicename Optional. The author's nicename (slug). Default empty.
2007-06-02 03:04:01 +00:00
* @return string The URL to the author's page.
*/
2015-12-17 17:30:43 +00:00
function get_author_posts_url ( $author_id , $author_nicename = '' ) {
2007-12-06 19:49:33 +00:00
global $wp_rewrite ;
2007-03-23 00:59:21 +00:00
$auth_ID = ( int ) $author_id ;
2017-11-30 23:11:00 +00:00
$link = $wp_rewrite -> get_author_permastruct ();
2005-10-12 17:01:50 +00:00
2017-11-30 23:11:00 +00:00
if ( empty ( $link ) ) {
2010-11-17 16:38:28 +00:00
$file = home_url ( '/' );
2005-10-12 17:01:50 +00:00
$link = $file . '?author=' . $auth_ID ;
} else {
2006-07-27 23:27:27 +00:00
if ( '' == $author_nicename ) {
2017-11-30 23:11:00 +00:00
$user = get_userdata ( $author_id );
if ( ! empty ( $user -> user_nicename ) ) {
2006-07-27 23:27:27 +00:00
$author_nicename = $user -> user_nicename ;
2017-11-30 23:11:00 +00:00
}
2006-07-27 23:27:27 +00:00
}
2017-11-30 23:11:00 +00:00
$link = str_replace ( '%author%' , $author_nicename , $link );
2010-11-16 16:09:46 +00:00
$link = home_url ( user_trailingslashit ( $link ) );
2005-10-12 17:01:50 +00:00
}
2013-09-13 19:25:10 +00:00
/**
2016-05-22 18:25:26 +00:00
* Filters the URL to the author's page.
2013-09-13 19:25:10 +00:00
*
* @since 2.1.0
*
* @param string $link The URL to the author's page.
* @param int $author_id The author's id.
* @param string $author_nicename The author's nice name.
*/
$link = apply_filters ( 'author_link' , $link , $author_id , $author_nicename );
2005-10-12 17:01:50 +00:00
return $link ;
2004-03-19 16:20:49 +00:00
}
2007-06-02 03:04:01 +00:00
/**
2016-01-28 03:51:26 +00:00
* List all the authors of the site, with several options available.
2007-12-16 23:47:58 +00:00
*
2015-04-12 21:29:32 +00:00
* @link https://codex.wordpress.org/Template_Tags/wp_list_authors
2014-06-29 22:34:14 +00:00
*
2008-08-27 06:45:13 +00:00
* @since 1.2.0
2014-06-29 22:34:14 +00:00
*
2015-10-14 23:44:25 +00:00
* @global wpdb $wpdb WordPress database abstraction object.
2015-05-22 04:14:24 +00:00
*
2014-06-29 22:34:14 +00:00
* @param string|array $args {
* Optional. Array or string of default arguments.
*
2016-07-04 14:34:27 +00:00
* @type string $orderby How to sort the authors. Accepts 'nicename', 'email', 'url', 'registered',
* 'user_nicename', 'user_email', 'user_url', 'user_registered', 'name',
* 'display_name', 'post_count', 'ID', 'meta_value', 'user_login'. Default 'name'.
* @type string $order Sorting direction for $orderby. Accepts 'ASC', 'DESC'. Default 'ASC'.
* @type int $number Maximum authors to return or display. Default empty (all authors).
* @type bool $optioncount Show the count in parenthesis next to the author's name. Default false.
2019-01-09 06:52:50 +00:00
* @type bool $exclude_admin Whether to exclude the 'admin' account, if it exists. Default true.
2016-07-04 14:34:27 +00:00
* @type bool $show_fullname Whether to show the author's full name. Default false.
* @type bool $hide_empty Whether to hide any authors with no posts. Default true.
* @type string $feed If not empty, show a link to the author's feed and use this text as the alt
* parameter of the link. Default empty.
* @type string $feed_image If not empty, show a link to the author's feed and use this image URL as
* clickable anchor. Default empty.
* @type string $feed_type The feed type to link to, such as 'rss2'. Defaults to default feed type.
* @type bool $echo Whether to output the result or instead return it. Default true.
* @type string $style If 'list', each author is wrapped in an `<li>` element, otherwise the authors
* will be separated by commas.
* @type bool $html Whether to list the items in HTML form or plaintext. Default true.
* @type array|string $exclude Array or comma/space-separated list of author IDs to exclude. Default empty.
* @type array|string $include Array or comma/space-separated list of author IDs to include. Default empty.
2014-06-29 22:34:14 +00:00
* }
2015-05-24 05:40:25 +00:00
* @return string|void The output, if echo is set to false.
2007-06-02 03:04:01 +00:00
*/
2014-05-13 06:02:14 +00:00
function wp_list_authors ( $args = '' ) {
2007-03-29 01:39:05 +00:00
global $wpdb ;
2007-06-14 02:25:30 +00:00
2007-09-03 23:32:58 +00:00
$defaults = array (
2017-11-30 23:11:00 +00:00
'orderby' => 'name' ,
'order' => 'ASC' ,
'number' => '' ,
'optioncount' => false ,
'exclude_admin' => true ,
'show_fullname' => false ,
'hide_empty' => true ,
'feed' => '' ,
'feed_image' => '' ,
'feed_type' => '' ,
'echo' => true ,
'style' => 'list' ,
'html' => true ,
'exclude' => '' ,
'include' => '' ,
2007-05-11 03:10:05 +00:00
);
2007-06-01 05:43:24 +00:00
2010-09-15 19:52:25 +00:00
$args = wp_parse_args ( $args , $defaults );
2007-06-01 05:43:24 +00:00
$return = '' ;
2017-11-30 23:11:00 +00:00
$query_args = wp_array_slice_assoc ( $args , array ( 'orderby' , 'order' , 'number' , 'exclude' , 'include' ) );
2010-12-21 16:27:34 +00:00
$query_args [ 'fields' ] = 'ids' ;
2017-11-30 23:11:00 +00:00
$authors = get_users ( $query_args );
2007-06-01 05:43:24 +00:00
2007-03-29 01:39:05 +00:00
$author_count = array ();
2017-11-30 23:11:00 +00:00
foreach ( ( array ) $wpdb -> get_results ( "SELECT DISTINCT post_author, COUNT(ID) AS count FROM $wpdb->posts WHERE " . get_private_posts_cap_sql ( 'post' ) . ' GROUP BY post_author' ) as $row ) {
$author_count [ $row -> post_author ] = $row -> count ;
2014-05-13 06:02:14 +00:00
}
2010-12-21 16:27:34 +00:00
foreach ( $authors as $author_id ) {
$author = get_userdata ( $author_id );
2009-03-18 02:43:45 +00:00
2014-05-13 06:02:14 +00:00
if ( $args [ 'exclude_admin' ] && 'admin' == $author -> display_name ) {
2010-09-15 19:52:25 +00:00
continue ;
2014-05-13 06:02:14 +00:00
}
2009-03-18 02:43:45 +00:00
2017-11-30 23:11:00 +00:00
$posts = isset ( $author_count [ $author -> ID ] ) ? $author_count [ $author -> ID ] : 0 ;
2005-10-12 17:01:50 +00:00
2014-05-13 06:02:14 +00:00
if ( ! $posts && $args [ 'hide_empty' ] ) {
2010-09-15 19:52:25 +00:00
continue ;
2014-05-13 06:02:14 +00:00
}
2010-09-15 19:52:25 +00:00
2014-05-13 06:02:14 +00:00
if ( $args [ 'show_fullname' ] && $author -> first_name && $author -> last_name ) {
2005-10-12 17:01:50 +00:00
$name = " $author->first_name $author->last_name " ;
2014-05-13 06:02:14 +00:00
} else {
2010-09-15 19:52:25 +00:00
$name = $author -> display_name ;
2014-05-13 06:02:14 +00:00
}
2005-10-12 17:01:50 +00:00
2014-05-13 06:02:14 +00:00
if ( ! $args [ 'html' ] ) {
2010-09-15 19:52:25 +00:00
$return .= $name . ', ' ;
2009-02-15 09:06:24 +00:00
2010-09-15 19:52:25 +00:00
continue ; // No need to go further to process HTML.
2009-02-15 09:06:24 +00:00
}
2014-05-13 06:02:14 +00:00
if ( 'list' == $args [ 'style' ] ) {
2007-06-01 05:43:24 +00:00
$return .= '<li>' ;
2010-09-15 19:52:25 +00:00
}
2017-11-30 23:11:00 +00:00
$link = sprintf (
'<a href="%1$s" title="%2$s">%3$s</a>' ,
2016-08-23 23:18:29 +00:00
get_author_posts_url ( $author -> ID , $author -> user_nicename ),
/* translators: %s: author's display name */
esc_attr ( sprintf ( __ ( 'Posts by %s' ), $author -> display_name ) ),
$name
);
2010-09-15 19:52:25 +00:00
2014-05-13 06:02:14 +00:00
if ( ! empty ( $args [ 'feed_image' ] ) || ! empty ( $args [ 'feed' ] ) ) {
2010-09-15 19:52:25 +00:00
$link .= ' ' ;
2014-05-13 06:02:14 +00:00
if ( empty ( $args [ 'feed_image' ] ) ) {
2010-09-15 19:52:25 +00:00
$link .= '(' ;
}
2014-05-13 06:02:14 +00:00
$link .= '<a href="' . get_author_feed_link ( $author -> ID , $args [ 'feed_type' ] ) . '"' ;
2010-09-15 19:52:25 +00:00
2014-03-18 22:02:15 +00:00
$alt = '' ;
2014-05-13 06:02:14 +00:00
if ( ! empty ( $args [ 'feed' ] ) ) {
2017-11-30 23:11:00 +00:00
$alt = ' alt="' . esc_attr ( $args [ 'feed' ] ) . '"' ;
2014-05-13 06:02:14 +00:00
$name = $args [ 'feed' ];
2005-10-12 17:01:50 +00:00
}
2004-03-23 04:45:27 +00:00
2010-09-15 19:52:25 +00:00
$link .= '>' ;
2014-05-13 06:02:14 +00:00
if ( ! empty ( $args [ 'feed_image' ] ) ) {
$link .= '<img src="' . esc_url ( $args [ 'feed_image' ] ) . '" style="border: none;"' . $alt . ' />' ;
} else {
2010-09-15 19:52:25 +00:00
$link .= $name ;
2014-05-13 06:02:14 +00:00
}
2010-09-15 19:52:25 +00:00
$link .= '</a>' ;
2004-03-23 04:45:27 +00:00
2014-05-13 06:02:14 +00:00
if ( empty ( $args [ 'feed_image' ] ) ) {
2010-09-15 19:52:25 +00:00
$link .= ')' ;
2014-05-13 06:02:14 +00:00
}
2005-10-12 17:01:50 +00:00
}
2004-03-23 04:45:27 +00:00
2014-05-13 06:02:14 +00:00
if ( $args [ 'optioncount' ] ) {
2017-11-30 23:11:00 +00:00
$link .= ' (' . $posts . ')' ;
2014-05-13 06:02:14 +00:00
}
2010-09-15 19:52:25 +00:00
$return .= $link ;
2014-05-13 06:02:14 +00:00
$return .= ( 'list' == $args [ 'style' ] ) ? '</li>' : ', ' ;
2005-10-12 17:01:50 +00:00
}
2009-02-15 09:06:24 +00:00
2014-05-13 06:02:14 +00:00
$return = rtrim ( $return , ', ' );
2009-02-15 09:06:24 +00:00
2014-05-13 06:02:14 +00:00
if ( ! $args [ 'echo' ] ) {
2007-06-01 05:43:24 +00:00
return $return ;
2014-05-13 06:02:14 +00:00
}
2007-06-01 05:43:24 +00:00
echo $return ;
2004-03-19 16:20:49 +00:00
}
2011-05-12 07:14:44 +00:00
/**
2018-02-13 16:54:31 +00:00
* Determines whether this site has more than one author.
2011-06-10 23:01:45 +00:00
*
2011-05-12 07:14:44 +00:00
* Checks to see if more than one author has published posts.
2018-03-18 14:23:33 +00:00
*
2018-02-13 16:54:31 +00:00
* For more information on this and similar theme functions, check out
2018-03-18 14:23:33 +00:00
* the {@link https://developer.wordpress.org/themes/basics/conditional-tags/
2018-02-13 16:54:31 +00:00
* Conditional Tags} article in the Theme Developer Handbook.
2018-03-18 14:23:33 +00:00
*
2011-06-11 04:40:18 +00:00
* @since 3.2.0
2015-05-22 04:14:24 +00:00
*
2015-10-14 23:44:25 +00:00
* @global wpdb $wpdb WordPress database abstraction object.
2015-05-22 04:14:24 +00:00
*
2011-05-12 07:14:44 +00:00
* @return bool Whether or not we have more than one author
*/
function is_multi_author () {
global $wpdb ;
2011-06-10 23:01:45 +00:00
2013-07-10 04:20:41 +00:00
if ( false === ( $is_multi_author = get_transient ( 'is_multi_author' ) ) ) {
2017-11-30 23:11:00 +00:00
$rows = ( array ) $wpdb -> get_col ( "SELECT DISTINCT post_author FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' LIMIT 2" );
2011-05-12 07:14:44 +00:00
$is_multi_author = 1 < count ( $rows ) ? 1 : 0 ;
2013-07-10 04:20:41 +00:00
set_transient ( 'is_multi_author' , $is_multi_author );
2011-05-12 07:14:44 +00:00
}
2013-09-13 19:25:10 +00:00
/**
2016-05-22 18:25:26 +00:00
* Filters whether the site has more than one author with published posts.
2013-09-13 19:25:10 +00:00
*
* @since 3.2.0
*
* @param bool $is_multi_author Whether $is_multi_author should evaluate as true.
*/
2011-09-07 13:53:53 +00:00
return apply_filters ( 'is_multi_author' , ( bool ) $is_multi_author );
2011-05-12 07:14:44 +00:00
}
2011-06-10 23:01:45 +00:00
/**
2011-05-12 07:14:44 +00:00
* Helper function to clear the cache for number of authors.
2011-06-10 23:01:45 +00:00
*
2016-12-27 09:21:44 +00:00
* @since 3.2.0
2017-03-25 15:47:42 +00:00
* @access private
2011-05-12 07:14:44 +00:00
*/
function __clear_multi_author_cache () {
2013-07-10 04:20:41 +00:00
delete_transient ( 'is_multi_author' );
2011-05-12 07:14:44 +00:00
}