按作者排序查询:1作者,然后是其他

时间:2012-07-16 作者:helgatheviking

我有一个称为“文章”的帖子类型,在文章存档页面上,我想显示所有文章,按作者排序。

function kia_adjust_the_query( $query ) {

    // change posts_per_page param
    if ( is_post_type_archive( \'article\' ) ) {
         set_query_var(\'posts_per_archive_page\',-1);
         set_query_var(\'order\',\'ASC\');
         set_query_var(\'orderby\',\'author\');
    }


}
add_action(\'pre_get_posts\', \'kia_adjust_the_query\');
以上设置了基本查询调整。然而,该博客主要是一位作者的博客,比如“Bob”。。。因此,理想情况下,我希望将Bob的所有帖子都拉到第一列中进行强调,然后通过其他作者继续。

在while循环过程中是否可以这样做,或者我是否需要两个单独的查询?

//编辑以增加复杂性:我通常会尽量把问题减少到最低限度,但在这种情况下,我认为我做得太过分了

我的客户是他的博客的唯一作者。但是,他使用一个元字段(“guest\\u author”)和过滤器get\\u the\\u author为他实际上没有写的访客帖子创建笔名,而不为其他用户创建帐户。

我可以对属于他的帖子的作者帖子进行排序(因此元字段中没有值),然后按其他作者进行排序(相同的作者ID,但不同的“guest\\u author”值)。如果这不可能,那么最好的近似方法是为其他作者创建虚拟帐户吗?

1 个回复
最合适的回答,由SO网友:Milo 整理而成

你可以自定义posts_orderby:

add_filter( \'posts_orderby\', \'wpa58715_posts_orderby\' );

function wpa58715_posts_orderby( $orderby_statement ) {
    if ( is_post_type_archive( \'article\' ) ) {
        global $wpdb;
        $orderby_statement = "FIELD($wpdb->posts.post_author, 42) DESC, $wpdb->posts.post_author";
        return $orderby_statement;
    }
}
将您的作者ID替换为42.

结束

相关推荐

分页不起作用wp_Query自定义字段值

全部的我希望那些帖子的post\\u type==profile,wpcf gender==1(男性)。我试过这个密码 $wp_query = new WP_Query( array( \'meta_key\' => \'wpcf-gender\', \'meta_value\' => \'1\', \'meta_compare\' => \'==\', \'post_type\' => \'profile\',\'posts_per_page\' =>