Сортировать запрос по автору: 1 автор, затем другие
У меня есть тип публикации "статья", и на странице архива статей я хотел бы показать все статьи, отсортированные по автору.
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');
Вышесказанное настраивает основные настройки запроса. тем не менее, блог в основном принадлежит 1 автору, скажем, "Бобу"... поэтому в идеале я хотел бы выделить все сообщения Боба в первую колонку для акцента, а затем продолжить с другими авторами.
Возможно ли это сделать во время цикла while каким-либо образом или я нужны 2 отдельных запроса?
//РЕДАКТИРОВАТЬ для дополнительной сложности: обычно я стараюсь свести свои вопросы к минимуму, но в данном случае я думаю, что зашел слишком далеко
Мой клиент является единственным автором в своем блоге. однако он использует мета-поле ("guest_author") и фильтрует get_the_author, чтобы создать псевдоним для гостевых сообщений, которые он на самом деле не писал, без создания учетных записей для других пользователей.
Могу ли я отсортировать сообщения автора, которые являются его сообщениями (поэтому в мета-поле нет значения) и затем другими авторами (тот же идентификатор автора, но другие значения "guest_author"). если это невозможно, будет ли лучшим способом приблизиться к этому - создать фиктивные учетные записи для других авторов?
1 answers
Вы могли бы сделать это с помощью специального 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;
}
}
Замените свой идентификатор автора на 42
.