Autorenseite – Liste der Kategorien plus Anzahl der Beiträge in dieser Kategorie

Auf meiner Autorenseite habe ich derzeit eine Liste von Kategorien, in die der Autor geschrieben hat, generiert durch den folgenden Code:

get_results(" SELECT DISTINCT(terms.term_id) as ID, terms.name, terms.slug FROM $wpdb->posts as posts LEFT JOIN $wpdb->term_relationships as relationships ON posts.ID = relationships.object_ID LEFT JOIN $wpdb->term_taxonomy as tax ON relationships.term_taxonomy_id = tax.term_taxonomy_id LEFT JOIN $wpdb->terms as terms ON tax.term_id = terms.term_id WHERE 1=1 AND ( posts.post_status = 'publish' AND posts.post_author = $curauth->ID AND tax.taxonomy = 'category' ) ORDER BY terms.name ASC "); $x = 0; ?> 
  • <a href="https://wordpress.stackexchange.com/questions/21581/author-page-list-of-categories-plus-number-of-posts-in-that-category/ID ); ?>" title="name ?>">name ?>

Was ich mache, ist, die Anzahl der Beiträge in jeder Kategorie in der foreach-Schleife neben der Kategorie in Klammern hinzuzufügen.

Irgendeine Idee, wie würde ich darüber gehen?

Vielen Dank!

Solutions Collecting From Web of "Autorenseite – Liste der Kategorien plus Anzahl der Beiträge in dieser Kategorie"

Sie können eine viel weniger elegante aber eine funktionierende Lösung versuchen, die alle Benutzer Beiträge erhalten und ihre Kategorien zählen:

 $query = new WP_Query(array( 'author' => $curauth->ID, 'posts_per_page' => -1 ) ); if ($query->have_posts()){ $u_cats = array(); while ($query->have_posts()){ $query->the_post(); $terms = wp_get_object_terms( $post->ID, 'category'); foreach ($terms as $term){ if (is_array($u_cats[$term->term_id])){ $u_cats[$term->term_id]['count'] = $u_cats[$term->term_id]['count'] +1; }else{ $u_cats[$term->term_id]['count'] = 1; $u_cats[$term->term_id]['name'] = $term->name; $u_cats[$term->term_id]['ID'] = $term->term_id ; } } } //Now $u_cats is an array of categories each with name, ID and author post count for that category $x = 0; ?> 
    < ?php foreach($u_cats as $category) : if( $x%2 ){ ?>
  • < ?php } else { ?>
  • < ?php } ?> < ?php echo $category['name']; ?>(< ?php echo $category['count']; ?>)
  • < ?php $x++; endforeach; ?>
< ?php }

Warum nicht wp_list_categories ?

 wp_list_categories( 'show_count=1' );