我正在使用
获取最近的帖子列表$recent_post = new WP_Query("cat='2,3,4,5,6,8,7,9,10,11,12'&posts_per_page&paged=".get_query_var('paged'));
其中一些帖子属于多个类别,我需要优先处理属于类别8
的帖子,无论是自己还是其他类别。
我想过运行两个单独的查询并合并他们的结果,但是有更好的方法吗?
答案 0 :(得分:1)
使用posts_orderby挂钩和SQL CASE语句。
尝试以下内容。 orderby子句的case语句表示如果是类别8,则指定值1,否则指定值2.然后还添加要排序的任何其他列(在我的示例中,post_title列)。 / p>
function my_posts_orderby($orderby_statement) {
global $wpdb;
$orderby_statement = "ORDER BY CASE WHEN $wpdb->term_taxonomy.term_id = 8 THEN 1 ASC, ELSE 2 ASC END, $wpdb->posts.post_title ASC";
return $orderby_statement;
}
add_filter('posts_orderby', 'my_posts_orderby');