0

What I want: https://i.sstatic.net/N4VAt.png (sorry for linking out, I am a new user here so can't post an image inline)

How does one list posts by an author within a category, with a count for each category, on the author archive page?

1 Answer 1

0

Not the most efficient way but it works, put this in your theme's functions.php

function author_post_breakdown($author_id){
    //get all post of this author
    $n = get_posts(array(
        'author' => $author_id,
        'posts_per_page' => -1,
        'fields' => 'ids'
        )
    );
    $cats= array();
    //loop over all post of this author and get the categories for each post
    foreach((array)$n as $id){
        $cs = wp_get_object_terms($id, 'category');
        //loop over each category of the post and add the counter
        foreach($cs as $c){
            if (isset($cats[$c->slug])){
                $cats[$c->slug]['count'] = $cats[$c->slug]['count'] + 1;
            }else{
                $cats[$c->slug]['count'] = 0;
                $cats[$c->slug]['name'] = $c->name;
            }
        }
    }
    foreach($cats as $sl => $arr)
        $retVal = '<li><a href="'.get_term_link($slug, 'category').'">'.$arr['name'].'('.$arr['count'].')</a></li>'; 

    return $retVal;
}

and in your author.php add this:

$curauth = (isset($_GET['author_name'])) ? get_user_by('slug', $_GET['author_name']) : get_userdata($_GET['author']);
echo '<ul>'.author_post_breakdown($curauth->ID).'</ul>';
2
  • Thanks! When I added the function to the functions.php file, the site still ran swell. However, when I added this to the author.php file, everything after wherever it was inserted wouldn't load on to the page in a browser (note the page would still load though, no 500 error or anything): <?php $curauth = (isset($_GET['author_name'])) ? get_user_by('slug', $_GET['author_name']) : get_userdata($_GET['author']); echo '<ul>'.author_post_breakdown($curauth->ID).'</ul>'; ?> Thanks again - seriously - and apologies if it's my user error with the added <?php ?> text somehow (is it?) Commented Mar 1, 2012 at 23:43
  • create a pastebin of your authors.php file
    – Bainternet
    Commented Mar 1, 2012 at 23:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.