Порядок записей в пользовательских Wordpress запросах ASC/DESC не такой, как ожидалось
У меня есть пользовательский запрос Wordpress, который выглядит следующим образом:
$args = array(
'post_type' => 'publication',
'post_status' => 'publish',
'category_name' => 'my-category',
'posts_per_page' => 20,
'orderby' => 'publication_year',
'order' => 'DESC',
'paged' => $paged
);
$loop1 = new WP_Query($args);
Я запрашиваю пользовательский тип сообщения, желая только сообщения с определенной категорией. FWIW, я создал тип поста, используя PODS. Запрос работает правильно с одним небольшим исключением - order
пункт:
orderby
поле относится к date
поле с именем "publishing_year", в котором отображаются только значения года 2015, 2014, 2013 и т. д., но в базе данных содержатся полные даты, например "2013-01-18" и аналогичные.
Теперь заказ, который я получаю с помощью вышеуказанного запроса, 2013, 2014, 2015 - хотя order
является DESC
, для которого я бы ожидал обратного. Если я изменю это на ASC
Я получаю 2015, 2014, 2013!
Я не понимаю этого - я бы ожидал, что в порядке возрастания будет 2013, 2014, 2015 и т. Д. Где я ошибаюсь?
1 ответ
publication_year
не столбец в wp_posts
Таблица. Смотрите описание базы данных WordPress. Если orderby
параметр недействителен, WordPress вернется к сортировке по умолчанию, которая является post_date
колонка.
Если это мета-значение, вы должны использовать:
$args = array(
'post_type' => 'publication',
'post_status' => 'publish',
'category_name' => 'my-category',
'posts_per_page' => 20,
'orderby' => 'meta_value_num',
'meta_key' => 'publication_year',
'order' => 'DESC',
'paged' => $paged
);
Смотрите кодекс WordPress для получения дополнительной информации.