WordPress.org

Ready to get started?Download WordPress

Forums

Archive template problems with the_author (13 posts)

  1. techstar
    Member
    Posted 4 years ago #

    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(); ?>
  2. uwiuw
    Member
    Posted 4 years ago #

    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;
  3. techstar
    Member
    Posted 4 years ago #

    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;
  4. uwiuw
    Member
    Posted 4 years ago #

    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.

  5. techstar
    Member
    Posted 4 years ago #

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

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

  6. uwiuw
    Member
    Posted 4 years ago #

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

  7. techstar
    Member
    Posted 4 years ago #

    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

  8. uwiuw
    Member
    Posted 4 years ago #

    $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

  9. techstar
    Member
    Posted 4 years ago #

    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?

  10. uwiuw
    Member
    Posted 4 years ago #

    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

  11. uwiuw
    Member
    Posted 4 years ago #

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

  12. techstar
    Member
    Posted 4 years ago #

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

  13. techstar
    Member
    Posted 4 years ago #

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

Topic Closed

This topic has been closed to new replies.

About this Topic