Упорядочить по DESC, ASC в пользовательском WP_Query
-
-
Что ж,вам следует опубликовать WP_Query,чтобы увидеть,правильно ли он сформирован.Well, you should post the WP_Query, to see if it is formed right.
- 0
- 2013-08-13
- Marin Bînzari
-
Вот оно во всей красе.В настоящее время я не упорядочиваю ничего,кроме этого логического мета-значенияb/c,это был единственный способ получить этот уровень или сортировку.На сайте также используются «заголовочные» сообщения,которые имеют приоритет над «избранными» сообщениями.Поэтому я исключаю их из этого запроса.There it is in all it's glory. I'm currently not ordering by anything but that boolean meta value b/c it was the only way to get that level or sorting working. The site also uses 'headline' posts which take precedence over 'featured' posts. Thus I exclude them in this query
- 0
- 2013-08-13
- ian
-
1 ответ
- голосов
-
- 2013-08-13
Попробуйте это:
$args = array( 'post_type' => 'post', 'meta_key' => 'pb_issue_featured', 'orderby' => 'meta_value', 'order' => 'DESC', 'posts_per_page' => $posts, 'paged' => $paged, 'paged' => 1, 'meta_query' => array( array( 'key' => 'headline', 'value' => 1, 'compare' => '!=' ) ) ); add_filter( 'posts_orderby', 'filter_query' ); $q = new WP_Query($args); remove_filter( 'posts_orderby', 'filter_query' ); function filter_query( $query ) { $query .= ', wp_posts.menu_order ASC'; return $query; }
Try this:
$args = array( 'post_type' => 'post', 'meta_key' => 'pb_issue_featured', 'orderby' => 'meta_value', 'order' => 'DESC', 'posts_per_page' => $posts, 'paged' => $paged, 'paged' => 1, 'meta_query' => array( array( 'key' => 'headline', 'value' => 1, 'compare' => '!=' ) ) ); add_filter( 'posts_orderby', 'filter_query' ); $q = new WP_Query($args); remove_filter( 'posts_orderby', 'filter_query' ); function filter_query( $query ) { $query .= ', wp_posts.menu_order ASC'; return $query; }
-
Как босс Спартак.Спасибо за лаконичный и точный ответ.Это сработало как шармLike a boss Spartakus. Thanks for the concise and accurate answer. This worked like a charm
- 0
- 2013-08-13
- ian
-
Вы также можете использовать массив в предложении orderby (WP 4.0 и новее)You could also use an array in the order by clause (WP 4.0 and newer)
- 1
- 2017-04-25
- Blueriver
Мне нужно сделать многоуровневый заказ в запросе. Проблема заключается в том,чтобы упорядочить одно значение DESC,а другое ASC,как в SQL. Следующий SQL,кажется,дает мне то,что я хочу,когда я запускаю его в терминале:
pb_issue_featured
- это логическое значение. Конечный результат,который мне нужен,- это запрос для отображения сообщений,у которых есть мета-значение 1 для этого поля вверху,а затем всех остальных ниже. Затем второй уровень упорядочивания - это назначенныйmenu_order
(я использую плагин для упорядочивания типов сообщений).Проблема в том,что мое логическое значение должно быть упорядочено по убыванию (от 1 до 0),а вотmenu_order - наоборот. То,что заказывается в плагине первым,имеет порядок меню 1. Поэтому использование встроенного 'orderby' в WP_Query не работает. У кого-нибудь есть предложения? Я заглянул в фильтр «posts_orderby»,но не смог заставить его принять. На самом деле не был уверен,где его следует применить или как я могу его устранить. Он просто не переупорядочивался так,как я.
Спасибо за помощь! Я опубликую настоящий WP_Query,если он актуален,но я хотел сделать его как можно короче.
Аргументы запроса: