Custom byline markup for Co-Authors Plus
Co-Authors Plus is a nice plugin for assigning multiple authors to posts. However, I find its template tag for displaying byline rather limiting because sometimes we want to use fancy markup for the byline (think of avatars, publish/modification dates, etc). You can use the code below as the base for your theme’s byline markup (in this example, we’re overriding twentyfourteen_posted_on()
):
function twentyfourteen_posted_on() {
if ( is_sticky() && is_home() && ! is_paged() ) {
echo '<span class="featured-post">' . __( 'Sticky', 'twentyfourteen' ) . '</span>';
}
// Set up and print post meta information.
printf( '<span class="entry-date"><a href="%1$s" rel="bookmark"><time class="entry-date" datetime="%2$s">%3$s</time></a></span>',
esc_url( get_permalink() ),
esc_attr( get_the_date( 'c' ) ),
esc_html( get_the_date() )
);
// get the co-authors
if ( function_exists( 'get_coauthors' ) ) {
$authors = get_coauthors();
}
// Fallback to WP users
if ( empty( $authors ) || ! is_array( $authors ) ) {
$authors = array( get_userdata( get_the_author_meta( 'ID' ) ) );
}
foreach ( $authors as $author ) {
$_args = apply_filters(
'coauthors_posts_link',
array( 'href' => get_author_posts_url( intval( $author->ID ), $author->user_nicename ) )
);
printf(
'<span class="byline"><span class="author vcard"><a class="url fn n" href="%1$s" rel="author">%2$s</a></span></span>',
esc_url( $_args['href'] ),
esc_html( $author->display_name )
);
}
}
“So how do I display the avatars” you ask? Add the following code to your theme’s functions.php
file and use it to get the avatar image instead of the default get_avatar()
:
/**
* Wrapper for get_avatar
*
* @param mixed $user User object, ID or email
* @param int $size Avatar size
* @param string $default Default avatar image
* @param string $alt Alt text
*/
function kucrut_get_avatar( $user, $size = 33, $default = '', $alt = false ) {
if ( is_object( $user ) && function_exists( 'coauthors_get_avatar' ) ) {
return coauthors_get_avatar( $user, $size, $default, $alt );
}
else {
return get_avatar( $user, $size, $default, $alt );
}
}
Posted on in Tips & Tutorials.