你的问题有点模棱两可,但我是这样理解的:给定一位作者,你想知道发表文章最多的三个类别。让我们使用wp_query
去那里。
$author = \'johndoe\';
$author_posts = new WP_Query (array (
\'author\' => $author,
\'posts_per_page\'=>-1,
));
现在我们有了这位作者的所有帖子的数组。遗憾的是,无法按类别排序(因为一篇帖子可能有多个类别),更不用说按每个类别的帖子数量排序了。因此,我们必须循环计算结果,然后自己计算。
$cat_array = array();
if ( $author_posts->have_posts() ) {
while ( $author_posts->have_posts() ) {
$author_posts->the_post();
$cat_array[] = wp_get_post_categories(get_the_ID(),array(\'fields\'=>\'names\'));
}
}
这将生成一个数组
$cat_array
它只包含所有作者帖子的所有分类名称。我们将不得不计算重复项,以查看哪个类别使用最多。有一个PHP函数:
array_count_values
.
$cat_count = array_count_values($cat_array);
$cat_count = arsort($catcount); // sorts an array by value from high to low
我们的结局是
$cat_count
持有该作者从高到低的类别列表。根据需要,可以使用此信息循环
$author_posts
再次或执行新查询以获取三大类别中的所有帖子:
$author = \'johndoe\';
$top_cats = $cat_count[0] . \',\' . $cat_count[1] . \',\' . $cat_count[2];
$author_posts = new WP_Query (array (
\'author\' => $author,
\'posts_per_page\' =>-1,
\'category_name\' => $top_cats,
));
请注意,就计算而言,这是一个相当昂贵的过程。还请注意,我没有测试此代码,因此可能需要进行一些调试。