Viewing 4 replies - 1 through 4 (of 4 total)
  • Admittedly, probably better much ways to handle but think this will get you started. Opening the theme files (there are alot) author post meta is defined by /includes/theme-actions.php and /includes/theme-functions.php – this would be a quick and dirty to replace author info and avatars making use of the canvas > filters form and modifying the defined author archive condition by replacing woo pluggable function for archive title. Also adds post type support for portfolio – authors (so coauthors can be assigned). Note: coauthors must be active – does not deprecate.

    Dump all of this in your canvas theme functions.php file (under where it says – You can add custom functions below):

    // Custom shortcode function for coauthors post links
    
    function coauthor_links_shortcode( ) {
    
        if ( function_exists( 'coauthors_posts_links' ) ) {
            $author = coauthors_posts_links( null, null, null, null, false );
        } else {
           $author = '[post_author_posts_link]';
        }
        return  $author;
    }
    
    add_shortcode('author_links','coauthor_links_shortcode');
    
    // Define woo_post_meta if not set in filter yet
    
    function woo_post_meta() {
    
    	if ( is_page() && !( is_page_template( 'template-blog.php' ) || is_page_template( 'template-magazine.php' ) ) ) {
    		return;
    	}
    
    	$post_info = '<span class="small">' . __( 'By', 'woothemes' ) . '</span> [author_links] <span class="small">' . _x( 'on', 'post datetime', 'woothemes' ) . '</span> [post_date] <span class="small">' . __( 'in', 'woothemes' ) . '</span> [post_categories before=""] ';
    printf( '<div class="post-meta">%s</div>' . "\n", apply_filters( 'woo_filter_post_meta', $post_info ) );
    
    } // End woo_post_meta()
    
    // Replace Single Post Author (in theme-actions.php) 
    
    function woo_author_box () {
    	global $post;
    	$author_id=$post->post_author;
    
    	// Adjust the arrow, if is_rtl().
    	$arrow = '→';
    	if ( is_rtl() ) $arrow = '←';
    
    ?>
    <?php foreach( get_coauthors() as $coauthor ): ?>
    <aside id="post-author">
    	<div class="profile-image"> <?php echo coauthors_get_avatar( $coauthor, '80', '', false ); ?></div>
    	<div class="profile-content">
    		<h4><?php echo 'About '.$coauthor->display_name ?></h4>
    		<?php echo $coauthor->description; ?>
    		<?php if ( is_singular() ) { ?>
    		<div class="profile-link">
    			<a href="<?php echo get_author_posts_url( $coauthor->ID, $coauthor->user_nicename ); ?>">
    				<?php echo ('View all posts by: ' . $coauthor->display_name . '<span class="meta-nav">' . $arrow . '</span>' ); ?>
    			</a>
    		</div><!--#profile-link-->
    		<?php } ?>
    	</div>
    	<div class="fix"></div>
    </aside>
    <?php endforeach;
    } // End woo_author_box()
    
    // Replace Archive Titles conditions
    
    function woo_archive_title ( $before = '', $after = '', $echo = true ) {
    
    	global $wp_query;
    
    	if ( is_category() || is_tag() || is_tax() ) {
    
    		$taxonomy_obj = $wp_query->get_queried_object();
    		$term_id = $taxonomy_obj->term_id;
    		$taxonomy_short_name = $taxonomy_obj->taxonomy;
    
    		$taxonomy_raw_obj = get_taxonomy( $taxonomy_short_name );
    
    	} // End IF Statement
    
    	$title = '';
    	$delimiter = ' | ';
    	$date_format = get_option( 'date_format' );
    
    	// Category Archive
    	if ( is_category() ) {
    
    		$title = '<span class="fl cat">' . __( 'Archive', 'woothemes' ) . $delimiter . single_cat_title( '', false ) . '</span> <span class="fr catrss">';
    		$cat_obj = $wp_query->get_queried_object();
    		$cat_id = $cat_obj->cat_ID;
    		$title .= '<a href="' . get_term_feed_link( $term_id, $taxonomy_short_name, '' ) . '" class="icon-rss icon-large" ></a></span>';
    
    		$has_title = true;
    	}
    
    	// Day Archive
    	if ( is_day() ) {
    
    		$title = __( 'Archive', 'woothemes' ) . $delimiter . get_the_time( $date_format );
    	}
    
    	// Month Archive
    	if ( is_month() ) {
    
    		$date_format = apply_filters( 'woo_archive_title_date_format', 'F, Y' );
    		$title = __( 'Archive', 'woothemes' ) . $delimiter . get_the_time( $date_format );
    	}
    
    	// Year Archive
    	if ( is_year() ) {
    
    		$date_format = apply_filters( 'woo_archive_title_date_format', 'Y' );
    		$title = __( 'Archive', 'woothemes' ) . $delimiter . get_the_time( $date_format );
    	}
    
    	// Author Archive
    	if ( is_author() ) {
    
    		$title = __( 'Author Archive', 'woothemes' ) . $delimiter . coauthors( null, null, null, null, true );
    	}
    
    	// Tag Archive
    	if ( is_tag() ) {
    
    		$title = __( 'Tag Archives', 'woothemes' ) . $delimiter . single_tag_title( '', false );
    	}
    
    	// Post Type Archive
    	if ( function_exists( 'is_post_type_archive' ) && is_post_type_archive() ) {
    
    		/* Get the post type object. */
    		$post_type_object = get_post_type_object( get_query_var( 'post_type' ) );
    
    		$title = $post_type_object->labels->name . ' ' . __( 'Archive', 'woothemes' );
    	}
    
    	// Post Format Archive
    	if ( get_query_var( 'taxonomy' ) == 'post_format' ) {
    
    		$post_format = str_replace( 'post-format-', '', get_query_var( 'post_format' ) );
    
    		$title = get_post_format_string( $post_format ) . ' ' . __( ' Archives', 'woothemes' );
    	}
    
    	// General Taxonomy Archive
    	if ( is_tax() ) {
    
    		$title = sprintf( __( '%1$s Archives: %2$s', 'woothemes' ), $taxonomy_raw_obj->labels->name, $taxonomy_obj->name );
    
    	}
    
    	if ( strlen($title) == 0 )
    	return;
    
    	$title = $before . $title . $after;
    
    	// Allow for external filters to manipulate the title value.
    	$title = apply_filters( 'woo_archive_title', $title, $before, $after );
    
    	if ( $echo )
    		echo $title;
    	else
    		return $title;
    
    } // End woo_archive_title()
    
    // Add Custom Post Type Support args
    
    add_action('init', 'custom_post_type_support');
    function custom_post_type_support() {
    	add_post_type_support( 'portfolio', array('publicize','author') );
    	/* add_post_type_support( 'product', array('publicize','author') ); -- if adding coauthor box to woocommerce */
    
    }

    Then go into Canvas > Filters and change for both Post Meta and Portfolios:

    [post_author_posts_link]

    to

    [author_links]

    gl

    Hi eburnettw79,

    You’re a life saver and are super awesome!

    There’s a new problem though: When it takes you to the archive of a single author (e.g. bertrand-johnson), the header of the archive lists all the authors.

    For example: https://www.everythingisscrewed.com/author/bertrand-johnson/

    Any idea how to fix this?

    I guess I could use CSS to hide the entire header, but I’d like a more elegant solution.

    I am using this with Canvas as well and just can’t figure out some issues:

    1 – I have used the code provided by eburnettw79, but when you click on either of the coauthors, the archive page includes both authors’ posts
    Here is a screenshot: https://i60.tinypic.com/bit101.jpg
    and the website is https://www.autismspectrumnews.org/author/russell-h-tobe-md/

    2 – There is a duplicate text of the authors name above just above the the heading for the Archive page. I don’t know how to stop this from being generated.

    3 – Neither the email or website information are showing up.

    Any help with this would really be appreciated!

    I am having the exact same issue as described by dminot. Did anyone came with a solution? Thanks!

Viewing 4 replies - 1 through 4 (of 4 total)
  • The topic ‘CoAuthors and Woothemes Canvas’ is closed to new replies.