TL;DR: если вы ищете простой способ сортировать сообщения WordPress по дате (будь то по убыванию или возрастанию) в области администрирования, чтобы пользователи не нажимали на заголовок столбца «Дата», вы можете сделать это с помощью pre_get_posts
фильтра. который предоставляет ссылку на экземпляр WP_Query
, работающий на странице.
Примеры в коде о том, как это сделать, см. в остальной части статьи.
Сортировка записей WordPress
Эта статья написана таким образом, что предполагает вашу настройку на основе классов. Это означает, что настройка фильтра определена в функции, например, init
и вызывает public
имя функции в классе, например sort_articles_by_recent_time
.
Наконец, он определяет приоритет 10
и указывает, что функция будет принимать один аргумент (который является экземпляром WP_Query
.
Сначала добавьте следующий фильтр:
add_action( 'pre_get_posts', [ $this, 'sort_articles_by_recent_time' ], 10, 1 );
Затем добавьте следующую функцию:
Вот как это работает:
- Обратите внимание на первые условные проверки, если мы не в области администрирования или если мы не на
edit.php
странице (которая является страницей со списком сообщений), мы просто оставляем функциональность. Это охранная оговорка или досрочное возвращение. - Если мы удовлетворяем обоим этим критериям, мы обновим запрос, чтобы он упорядочивал публикации по дате в порядке убывания. Это означает, что самые последние даты всегда будут отображаться вверху.
Это не учитывает статус сообщения (поэтому, если это сообщение draft
или сообщение со publish
статусом, это не имеет значения). Кроме того, это избавит пользователей от необходимости щелкать заголовок столбца «Дата» для сортировки результатов по мере необходимости, если это то, чего вы хотите в своем решении.
использованная литература
[pre_get_posts](https://developer.wordpress.org/reference/hooks/pre_get_posts/)
[WP_Query](https://developer.wordpress.org/reference/classes/wp_query/)