您的筛选器将生成SQL查询GROUP BY
声明,但没有aggregate function. 这将导致仅显示组中出现的与查询匹配的第一行,并忽略后续行。阅读this question 了解更多详细信息。
如果要按顺序排列结果post_type
, 您可以连接到posts_orderby
改为筛选:
add_filter(\'posts_orderby\', \'group_by_post_type\', 10, 2);
function group_by_post_type($orderby, $query) {
global $wpdb;
if ($query->is_search) {
return $wpdb->posts . \'.post_type DESC\';
}
// provide a default fallback return if the above condition is not true
return $orderby;
}