如何获得按匹配分类中的N个排序的查询? 时间:2014-11-08 作者:untore 如何获得按与指定列表匹配的标记数排序的wp查询?我想检索一个与当前帖子类别相匹配的帖子列表(这是一个普通过滤器),但这些帖子的顺序是从匹配标签的最大数量到最小数量。它是否太过资源密集? 1 个回复 最合适的回答,由SO网友:Pieter Goosen 整理而成 没有本机函数可以完成您所需的功能。我能想到的唯一可能的解决办法是利用usort 对自定义查询返回的帖子数组进行排序您需要执行以下操作:为您的列表设置所需的标签获取帖子所属标签的列表返回一个数组,其中包含与这两个数组匹配的所有标记对标签进行计数,并将标签计数存储在一个数组中对数组进行排序,再次循环浏览帖子,并正常显示此处使用的功能如下get_the_tagsusortarray_intersectwp_list_pluck这里是一个示例代码。根据需要修改$args = array( \'posts_per_page\' => \'-1\', \'cat\' => \'YOUR_CATID\', ); $q = new WP_Query( $args ); if( $q->have_posts() ) { $count = []; $count1 = []; while( $q->have_posts() ) { $q->the_post(); $posttags = get_the_tags(); if( $posttags ) { $tag_slugs = wp_list_pluck( $posttags, \'slug\' ); $relevant_tags = array(\'tag1\', \'tag2\', \'etc which translates to end of thought capacity\' ); $matched_tags = array_intersect( $tag_slugs, $relevant_tags ); $count[$post->ID] = count( $matched_tags ); }else{ $count[$post->ID] = 0; } } usort( $q->posts, function ($a, $b) use($count) { return ($count[$a->ID] < $count[$b->ID]) ? 1 : -1; }); rewind_posts(); while( $q->have_posts() ) { $q->the_post(); //Display your loop elements } } 结束 文章导航