Порядок записей в пользовательских Wordpress запросах ASC / DESC не такой, как ожидалось - PullRequest
0 голосов
/ 18 января 2019

У меня есть собственный запрос 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 Ответ

0 голосов
/ 18 января 2019

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 для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...