我担心WP core中没有功能可以根据给定的帖子列表获取唯一类别的数量。。。
让我们先看看你的代码。。。这里面有一些问题。。。
这里不需要使用典型的循环-它会导致许多后台操作(设置全局变量等)。使用foreach会更有效。
如果有多个类别具有相同的名称(例如不同的父类别),则可能返回错误的结果。
有没有更有效的方法?是的,有(特别是,如果返回了许多帖子),您可以使用自定义SQL仅通过一个查询获取类别计数。。。方法如下:
global $wp_query;
global $wpdb;
$post_ids = implode( \',\', wp_list_pluck( $wp_query->posts, \'ID\' ) );
$total_categories_in_search_results = $wpdb->get_var( "
SELECT COUNT(DISTINCT tt.term_taxonomy_id) FROM
{$wpdb->term_taxonomy} tt
INNER JOIN {$wpdb->term_relationships} tr ON ( tt.term_taxonomy_id = tr.term_taxonomy_id )
WHERE
tt.taxonomy = \'category\'
AND tr.object_id IN ({$post_ids})
" );