Сортировка записей в админ-панели WordPress

На днях столкнулся с необходимостью поменять стандартную сортировку записей в админ-панели WordPress. Код весьма прост, потому имеет право претендовать на универсальность. Хотя и может варьироваться в каждом конкретном случае.

Делюсь решением данной задачи, быть может кому-то тоже пригодится.

function set_post_order_in_admin( $wp_query ) {
  if ( is_admin() ) {
    $wp_query->set( 'orderby', 'date' );
    $wp_query->set( 'order', 'DESC' );
  }
}
add_filter('pre_get_posts', 'set_post_order_in_admin' );

Данный фрагмент кода необходимо добавить в хорошо знакомый нам functions.php. В примере я выполнял сортировку по убыванию (DESC) по колонке «дата». Аналогичным способом можно выполнять сортировку по id, title и любому другому произвольному полю.

Для сортировки по мета-полям используйте:

$wp_query->set( 'orderby', 'meta_value' );
$wp_query->set( 'meta_key', '[название-поля]' );

Обращаю внимание! Приведенные выше примеры выполняют сортировку для всех записей и страниц вашего сайта.

Чтобы задать сортировку только для определенного типа записей, немного усовершенствуем наш код:

function set_post_order_in_admin( $wp_query ) {
$post_type = $wp_query->get('post_type');
  if ( is_admin() && $post_type == 'articles') {
    $wp_query->set( 'orderby', 'date' );
    $wp_query->set( 'order', 'ASC' );
  }
}

В примере выполнена сортировка по возрастанию по колонке «дата» для произвольного типа записей «articles».

Вот в общем-то и все. До скорого!

Опубликовано: 30 апреля 2016 года, в рубрике «Wordpress».

Теги:
Комментарии для данной записи отключены
Поблагодарить автора статьи
Зачем это нужно