如何根据wordpress中的类别优先排序帖子?

时间:2014-09-29 17:30:48

标签: php wordpress

我正在使用

获取最近的帖子列表
$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的帖子,无论是自己还是其他类别。

我想过运行两个单独的查询并合并他们的结果,但是有更好的方法吗?

1 个答案:

答案 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');