Support » Themes and Templates » Archive template problems with the_author

  • techstar

    (@techstar)


    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)
  • uwiuw

    (@uwiuw)

    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;
    techstar

    (@techstar)

    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;
    uwiuw

    (@uwiuw)

    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.

    techstar

    (@techstar)

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

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

    uwiuw

    (@uwiuw)

    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;
    `

    techstar

    (@techstar)

    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

    uwiuw

    (@uwiuw)

    $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

    techstar

    (@techstar)

    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?

    uwiuw

    (@uwiuw)

    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

    uwiuw

    (@uwiuw)

    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 😉

    techstar

    (@techstar)

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

    techstar

    (@techstar)

    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.