我认为你走对了,因为wp_get_object_terms()
可以将ID数组作为其第一个参数,只是$wp\\u query不是您想要的数组。
我不能保证这是更有效的(不是我的专业领域),但我相信这个[部分测试过的]代码片段可以做你想做的事情,至少少一个循环array_unique()
:
// get $wp_query
global $wp_query;
// get array of post objects
$my_posts = $wp_query -> posts;
// make array for the post IDs
$my_post_ids = array();
// loop through posts array for IDs
foreach( $my_posts as $my_post ) {
$my_post_ids[] = $my_post->ID;
}
// get the terms
$my_terms = wp_get_object_terms( $my_post_ids, \'alfa\' );
wp_get_object_terms()
第三次
$args
参数,您可能需要设置该参数以获取所需的输出,但我将把它留给您。
更新:使用new to me功能可以缩短时间wp_list_pluck()
. 这同样未经测试,但看起来是正确的:
// get $wp_query
global $wp_query;
// get array of post objects
$my_posts = $wp_query -> posts;
// NEW: make array of the post IDs in one step
$my_post_ids = wp_list_pluck( $my_posts, \'ID\' );
// get the terms
$my_terms = wp_get_object_terms( $my_post_ids, \'alfa\' );
你可以看到
in the source 这个运行相同
foreach
循环代码,但看起来更好一点。