WordPress.org

Ready to get started?Download WordPress

Forums

Co-Authors Plus
[resolved] Sollution: replacing standard twenty-xxx entry_meta function (5 posts)

  1. thomask
    Member
    Posted 1 year ago #

    If you are using standard twenty-ten, twenty-eleven,twenty-twelve ... theme, you may notice entry meta function (e.g. twentytwelve_entry_meta) which place footer to every post. This footer contains information about post author, so if you want to replace it with all co-authors, here is a sollution

    1. twentytwelve_entry_meta (or twentyeleven ... based on your theme) function is used in the theme with function_exist condition, so you can just copy whole twentytwelve_entry_meta function to your functions.php file
    2. in this function, replace part starting with $author with this code:

    if(function_exists('coauthors')) {
        $i = new CoAuthorsIterator();
        $i->iterate();
        $author = '';
        function author_function() {
        return sprintf( '<span class="author vcard"><a class="url fn n" href="%1$s" title="%2$s" rel="author">%3$s</a></span>',
                  		   esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ),
                  		   esc_attr( sprintf( __( 'View all posts by %s', 'twentytwelve' ), get_the_author() ) ),
                  		   get_the_author()
                  	    );
        }
        do{
          if (!$i->is_first()) $author .= $i->is_last() ? ' a ' : ', ';
            	$author .= author_function ();
        } while($i->iterate());
     } else {
      	$author = author_function ();
     }

    http://wordpress.org/extend/plugins/co-authors-plus/

  2. thomask
    Member
    Posted 1 year ago #

    ups, srry, wrong code, right one:

    if(function_exists('coauthors')) {
        $i = new CoAuthorsIterator();
        $i->iterate();
        $author = '';
        do{
          if (!$i->is_first()) $author .= $i->is_last() ? ' a ' : ', ';
            	$author .= sprintf( '<span class="author vcard"><a class="url fn n" href="%1$s" title="%2$s" rel="author">%3$s</a></span>',
                  		   esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ),
                  		   esc_attr( sprintf( __( 'View all posts by %s', 'twentytwelve' ), get_the_author() ) ),
                  		   get_the_author()
                  	    );
        } while($i->iterate());
     } else {
      	$author = sprintf( '<span class="author vcard"><a class="url fn n" href="%1$s" title="%2$s" rel="author">%3$s</a></span>',
                  		   esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ),
                  		   esc_attr( sprintf( __( 'View all posts by %s', 'twentytwelve' ), get_the_author() ) ),
                  		   get_the_author()
                  	    );
     }
  3. jaypinho
    Member
    Posted 1 year ago #

    Hi there,

    Apologies in advance if this is a dumb question. But I don't understand this part:

    2. in this function, replace part starting with $author with this code:

    I didn't see anything in that section with "$author" though: this is what it looks like for me:

    <footer class="entry-meta">
    			<?php twentytwelve_entry_meta(); ?>
    			<?php edit_post_link( __( 'Edit', 'twentytwelve' ), '<span class="edit-link">', '</span>' ); ?>
    			<?php if ( is_singular() && get_the_author_meta( 'description' ) && is_multi_author() ) : // If a user has filled out their description and this is a multi-author blog, show a bio on their entries. ?>
    				<div class="author-info">
    					<div class="author-avatar">
    						<?php echo get_avatar( get_the_author_meta( 'user_email' ), apply_filters( 'twentytwelve_author_bio_avatar_size', 68 ) ); ?>
    					</div><!-- .author-avatar -->
    					<div class="author-description">
    						<h2><?php printf( __( 'About %s', 'twentytwelve' ), get_the_author() ); ?></h2>
    						<p><?php the_author_meta( 'description' ); ?></p>
    						<div class="author-link">
    							<a href="<?php echo esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ); ?>" rel="author">
    								<?php printf( __( 'View all posts by %s <span class="meta-nav">&rarr;</span>', 'twentytwelve' ), get_the_author() ); ?>
    							</a>
    						</div><!-- .author-link	-->
    					</div><!-- .author-description -->
    				</div><!-- .author-info -->
    			<?php endif; ?>
    		</footer><!-- .entry-meta -->

    Can you please describe what I'm supposed to do here? Thanks!

    Jay

  4. Daniel Bachhuber
    Hand Built
    Plugin Author

    Posted 1 year ago #

    @ jaypinho If you want to have the entire author box show both authors, you can do so with a snippet like this:

    <?php if ( is_singular() && is_multi_author() ) : // If a user has filled out their description and this is a multi-author blog, show a bio on their entries. ?>
    <?php foreach( get_coauthors() as $coauthor ) : ?>
    	<div class="author-info">
    		<div class="author-avatar">
    			<?php echo get_avatar( $coauthor->user_email, apply_filters( 'twentytwelve_author_bio_avatar_size', 68 ) ); ?>
    		</div><!-- .author-avatar -->
    		<div class="author-description">
    			<h2><?php printf( __( 'About %s', 'twentytwelve' ), $coauthor->display_name ); ?></h2>
    			<p><?php $coauthor->description; ?></p>
    			<div class="author-link">
    				<a href="<?php echo esc_url( get_author_posts_url( $coauthor->ID ) ); ?>" rel="author">
    					<?php printf( __( 'View all posts by %s <span class="meta-nav">&rarr;</span>', 'twentytwelve' ), $coauthor->display_name ); ?>
    				</a>
    			</div><!-- .author-link	-->
    		</div><!-- .author-description -->
    	</div><!-- .author-info -->
    <?php endforeach; endif; ?>

    Otherwise, you can remove it entirely.

  5. jaypinho
    Member
    Posted 1 year ago #

    Thanks, Daniel!

Topic Closed

This topic has been closed to new replies.

About this Plugin

About this Topic