列出在WordPress的类别/标签中写了一定数量帖子的作者

我正在努力在类别页面上获得作者列表。我需要列出在该类别中至少写过5篇文章的作者。
我也需要标签中的类似内容。
任何想法如何在WordPress中做到这一点?
#1尝试这个。

function list_author_in_this_cat ($with) { if (is_category()) { $current_category = get_query_var('cat'); $args = array( 'numberposts' => -1, 'category' => $current_category, 'orderby' => 'author', 'order' => 'ASC' ); } else { $tag_id = get_query_var('tag_id'); $args = array( 'numberposts' => -1, 'tag__in' => $tag_id, 'orderby' => 'author', 'order' => 'ASC' ); } $cat_posts = get_posts($args); $author_id_array = array(); $user_posts = array(); foreach( $cat_posts as $cat_post ): $user_posts[$cat_post-> post_author][] = $cat_post-> ID; endforeach; foreach( $user_posts as $key => $user_post ): $user_post = array_unique($user_post); $count_user_posts[$key] = count($user_post); if ($count_user_posts[$key] > = $with) { $author_id_array[] = $key; } endforeach; return $author_id_array; }

在主题文件中, 将此代码放置在希望显示作者列表的任何位置:
if (is_category() || is_tag()) {$at_least = 5; // at least 5 articles in current category or tags$author_array = list_author_in_this_cat ($at_least); foreach (array_slice($author_array, 0, 4) as $author) : // limit 4 results $name = get_userdata($author)-> display_name; $link = get_userdata($author)-> user_login; echo "< a href='http://www.srcmini.com/author/".$link."'> ".$name."< /a> \n"; endforeach; }

#2唯一可能的情况是使用自定义SQL查询, 因此这是一个简单的函数, 该函数应返回一个数组, 该数组包含当前术语归档中至少具有$ n个帖子的用户的用户ID, 这意味着它应该在类别, 标签和自定义分类法中工作
function get_authors_with($num = 5){ global $wpdb; $term_slug = get_query_var( 'term' ); $taxonomyName = get_query_var( 'taxonomy' ); $current_term = get_term_by( 'slug', $term_slug, $taxonomyName ); $sub_q = $wpdb-> prepare("SELECT * FROM $wpdb-> posts INNER JOIN $wpdb-> term_relationships ON ($wpdb-> posts.ID = $wpdb-> term_relationships.object_id) INNER JOIN $wpdb-> term_taxonomy ON ($wpdb-> term_relationships.term_taxonomy_id = $wpdb-> term_taxonomy.term_taxonomy_id) WHERE ($wpdb-> term_taxonomy.term_id = %s AND $wpdb-> term_taxonomy.taxonomy = '%s' AND $wpdb-> posts.post_type = 'post' AND $wpdb-> posts.post_status = 'publish')", $current_term-> term_id, $taxonomyName ); $sql = $wpdb-> prepare("SELECT $wpdb-> posts.post_author, FROM (%s) GROUP BY $wpdb-> posts.post_author HAVING count(*) > %s", $sub_q, $num ); return $wpdb-> get_results($sql); }

#3将以下代码添加到主题的function.php中
function get_authors_in_category ( $category_id, $min_posts ) { $posts = get_posts( array( 'numberposts' => 1000, 'category' => $category_id ) ); $author_count = array(); foreach ($posts as $post) { if( array_key_exists( get_the_author_meta( 'display_name', $post-> post_author ), $author_count ) ) { $author_count[get_the_author_meta( 'display_name', $post-> post_author )]++; } else { $author_count[get_the_author_meta( 'display_name', $post-> post_author )] = 1; } } $authors = array(); foreach ( $author_count as $author_name => $count ) { if ( $min_posts< = $count ) { $authors[] = $author_name; } return $authors; }

如你所见, 此函数返回在一个类别中帖子数量最少的作者数组。必须传递类别ID, 可以使用wordpress函数get_cat_ID获得。
你可以从主题中的任何位置调用此函数, 并根据需要显示作者。
注意:与自定义SQL函数相比, 这会占用更多资源。此外, 此功能可能会出现一些错误, 我在这里输入了它, 但未对其进行测试。
#4我使用查询后方法进行了一些简单的编码。
< ?php $cur_cat_id = get_cat_id(single_cat_title("", false)); $posts=query_posts("cat=$cur_cat_id& order=ASC"); foreach($posts as $post){ $number_of_posts = number_format_i18n(get_the_author_posts($post-> post_author)); if($number_of_posts> 5) { echo the_author_meta('user_nicename', $post-> post_author)."(".number_format_i18n(get_the_author_posts($post-> post_author)).")< br> "; } } ?>

【列出在WordPress的类别/标签中写了一定数量帖子的作者】我认为这可以帮助你解决问题。

    推荐阅读