WordPress.org

Support

Support » Themes and Templates » Archive template problems with the_author

Archive template problems with the_author

  • I am trying to display the_author outside of the loop. I have the_author_posts working, it displays the # of posts fine, but for some reason it wont show the_author name.

    Here is the code <p><?php the_author(); ?> has <?php the_author_posts(); ?> articles.</p>

    This is the entire archive.php below. Any help is appreciated. thanks

    <?php
    /**
     * @package WordPress
     * @subpackage Default_Theme
     */
    
    get_header();
    ?>
    
    	<div id="content" class="narrowcolumn" role="main">
    	<div class="latest">
    		<?php if (have_posts()) : ?>
    
     	  <?php $post = $posts[0]; // Hack. Set $post so that the_date() works. ?>
     	  <?php /* If this is a category archive */ if (is_category()) { ?>
    		<h2 class="pagetitle">Archive for the ‘<?php single_cat_title(); ?>’ Category</h2>
     	  <?php /* If this is a tag archive */ } elseif( is_tag() ) { ?>
    		<h2 class="pagetitle">Posts Tagged ‘<?php single_tag_title(); ?>’</h2>
     	  <?php /* If this is a daily archive */ } elseif (is_day()) { ?>
    		<h2 class="pagetitle">Archive for <?php the_time('F jS, Y'); ?></h2>
     	  <?php /* If this is a monthly archive */ } elseif (is_month()) { ?>
    		<h2 class="pagetitle">Archive for <?php the_time('F, Y'); ?></h2>
     	  <?php /* If this is a yearly archive */ } elseif (is_year()) { ?>
    		<h2 class="pagetitle">Archive for <?php the_time('Y'); ?></h2>
    	  <?php /* If this is an author archive */ } elseif (is_author()) { ?>
    		<div style="margin:15px 0px 10px 0px;"><h2 class="pagetitle">Author Archive</h2></div>
    
    	 <?php /* If this is a paged archive */ } elseif (isset($_GET['paged']) && !empty($_GET['paged'])) { ?>
    		<h2 class="pagetitle">Blog Archives</h2>
     	  <?php } ?>
    
    <p><?php the_author(); ?> has <?php the_author_posts(); ?> articles.</p>
    
    		<div class="navigation">
    			<div class="alignleft"><?php next_posts_link('&laquo; Older Entries') ?></div>
    			<div class="alignright"><?php previous_posts_link('Newer Entries &raquo;') ?></div>
    		</div>
    <br />
    <div class="entry">
    		<?php while (have_posts()) : the_post(); ?>
    
    	   <div class="top">
    
                        <h1><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>">
                        <?php the_title(); ?>
                    	</a></h1>
    
                    	<div class="meta"> by <?php the_author_posts_link(); ?> Posted on <?php the_time('F d, Y'); ?>	</div>		
    
                    	<div class="thumb-150x75"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><img src="<?php echo get_post_meta($post->ID, "Thumbnail-150x75", true);?>" alt="" /></a></div>
                    	<?php the_excerpt(); ?>
    <div class="readme">
    <a href="<?php the_permalink() ?>" class="readmore alignright">Read More</a></div>
    
                        <div style="clear:both;"></div>
    				</div>
    			<?php $counter++; endwhile; ?>
    
    	</div>
    		<div class="navigation">
    			<div class="alignleft"><?php next_posts_link('&laquo; Older Entries') ?></div>
    			<div class="alignright"><?php previous_posts_link('Newer Entries &raquo;') ?></div>
    		</div>
    	<?php else :
    
    		if ( is_category() ) { // If this is a category archive
    			printf("<h2 class='center'>Sorry, but there aren't any posts in the %s category yet.</h2>", single_cat_title('',false));
    		} else if ( is_date() ) { // If this is a date archive
    			echo("<h2>Sorry, but there aren't any posts with this date.</h2>");
    		} else if ( is_author() ) { // If this is a category archive
    			$userdata = get_userdatabylogin(get_query_var('author_name'));
    			printf("<h2 class='center'>Sorry, but there aren't any posts by %s yet.</h2>", $userdata->display_name);
    		} else {
    			echo("<h2 class='center'>No posts found.</h2>");
    		}
    		get_search_form();
    
    	endif;
    ?>
    </div>
    	</div>
    
    <?php get_sidebar(); ?>
    
    <?php get_footer(); ?>
Viewing 12 replies - 1 through 12 (of 12 total)
  • the_author() must be put inside the loop. see the_author

    There’s another way to show it. for example

    global $post
    echo $post->post_author;

    I thought with the <?php ?> y`ou could use it outside the loop?

    So what do I do with

    global $post
    echo $post->post_author;

    I thought with the <?php ?> you could use it outside the loop?

    no, the function need to be put inside loop

    global $post
    echo $post->post_author;

    the above code will show the name_author outside the loop.

    hmm i see. It works but it shows the author ID # not the name.

    <?php
    global $post;
    echo $post->post_author;
    ?>

    Use this. this snippet will show the similar result.

    global $post;
    $userid = $post->post_author;
    $user_total_post = get_usernumposts($userid);
    $user_array = get_userdata($userid);

    $userinfo = $user_array->user_login . ” has $user_total_post posts”;
    echo $userinfo;
    `

    That’s it uwiuw, thank you.

    What if I wanted to add the bio/description and avatar?

    I found $curauth->description; in the codex, but wouldnt have the slightest how to use it in this context. I could not find any reference to the avatar http://codex.wordpress.org/Author_Templates

    $curauth->description

    $curauth is a global variable (or $current_user ? i forgot ;)) and this variable only exist after the user log in.

    so add following code

    $user_email = get_usermeta( $userid, 'user_email');
    $description = get_usermeta( $userid, 'description');
    
    $userinfo  .= " and has email : $user_email<br />$description";
    $userinfo  .= get_avatar($user_email, $size, $default, $alt );
    
    echo $userinfo;

    ps : you can style it as you please

    This is the weirdest thing ever.

    <?php
    global $post;
    $userid = $post->post_author;
    $user_total_post = get_usernumposts($userid);
    $user_array = get_userdata($userid);
    
    $userinfo = $user_array->user_login . "<br />Total Articles: $user_total_post<br />Bio: ";
    
    $user_email = get_usermeta( $userid, 'user_email');
    $description = get_usermeta( $userid, 'description');
    
    $userinfo  .= "$description";
    $userinfo  .= get_avatar($user_email, $size, $default, $alt );
    
    echo $userinfo;
    ?>

    That’s my code, but user_login is not the same as Display Name so it’s not really the same.

    How can I move the avatar to the top with a right alignment so the_author name, bio and post count appear on the side of the avatar?

    This really confusing, there are no docs on how this works in the code?

    you can retrieve display name by using

    $display_name = get_usermeta( $userid, 'display_name');

    How can I move the avatar to the top with a right alignment so the_author name, bio and post count appear on the side of the avatar?

    i believe you need learn some css. here the best place to learn w3school

    This really confusing, there are no docs on how this works in the code?

    i believe all of this came from codex.wordpress.com. you just have to look deeper 😉

    I know a little about css, I just wrap the php statement in a div I guess..

    Darn, the avatar doesnt pull the users custom photo, it just selects a random avatar…

Viewing 12 replies - 1 through 12 (of 12 total)
  • The topic ‘Archive template problems with the_author’ is closed to new replies.