На днях столкнулся с необходимостью поменять стандартную сортировку записей в админ-панели 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».
Вот в общем-то и все. До скорого!