Как отсортировать записи пользовательского типа по дате (по убыванию) в панели администратора?

17 янв. 2013 г., 11:00:33
Просмотры: 32.2K
Голосов: 9

Я создал новый тип записи с названием "Video".

Когда я создаю записи для этого типа, они сортируются по title ASC.

Возможно ли отсортировать записи по дате в порядке убывания?

register_post_type('Videos', array(
    'labels' => array(
        'name' => _x('Видео', 'общее название типа записи'),
        'singular_name' => _x('Видео', 'единственное число названия типа записи'),
        'add_new' => _x('Добавить', 'Видео'),
        'add_new_item' => __('Добавить новое видео'),
        'edit_item' => __('Редактировать видео'),
        'new_item' => __('Новое видео'),
        'view_item' => __('Посмотреть ссылку на видео'),
        //'search_items' => __('Видео'),
        'menu_name' => 'Видео'
    ),
    'public' => true,
    'show_ui' => true,
    'capability_type' => 'post',
    'hierarchical' => true,
    'rewrite' => array('slug' => 'video'),
    'query_var' => true,
    'supports' => array(
        'title',
        'editor' => false,
        'excerpt' => false,
        'trackbacks' => false,
        'custom-fields',
        'comments' => false,
        'revisions' => false,
        'thumbnail' => false,
        'author' => false,
        'page-attributes' => false,
    ),
    'taxonomies' => array('post_tag')
   )
 );
2
Комментарии

Пожалуйста, добавьте код, где вы выводите записи. Вы не добавляете параметр order_by при регистрации типа записи, только при запросе записей

Pontus Abrahamsson Pontus Abrahamsson
17 янв. 2013 г. 16:25:57

Ой, извините, я хотел бы добавить order_by в админке WordPress

Steffi Steffi
17 янв. 2013 г. 18:07:57
Все ответы на вопрос 4
3
19

Хорошо, вы можете просто подключиться к фильтру pre_get_posts и проверить is_admin. Поместите это в вашу тему или плагин:

function wpse_81939_post_types_admin_order( $wp_query ) {
  if (is_admin()) {

    // Получаем тип записи из запроса
    $post_type = $wp_query->query['post_type'];

    if ( $post_type == 'Videos') {

      $wp_query->set('orderby', 'date');

      $wp_query->set('order', 'DESC');
    }
  }
}
add_filter('pre_get_posts', 'wpse_81939_post_types_admin_order');

Я также рекомендую изменить post_type "Videos" на нижний регистр, например "video".

17 янв. 2013 г. 19:04:14
Комментарии

Хорошо, спасибо Понтус! Я попробую это. Но почему это не установлено по умолчанию? Потому что для "Записей" уже установлен "orderby DESC"

Steffi Steffi
17 янв. 2013 г. 23:40:26

У вас сработало?

Pontus Abrahamsson Pontus Abrahamsson
18 янв. 2013 г. 10:15:42

Это не по умолчанию, потому что по умолчанию стоит сортировка по "Имени" в алфавитном порядке (или, наверное, по слагу)

Nabeel Khan Nabeel Khan
4 мая 2016 г. 01:51:22
0
10

В приведённом выше примере отключается возможность сортировки при нажатии на заголовки столбцов.

Сортировка для нескольких пользовательских типов записей:

function wpse_819391_post_types_admin_order( $wp_query ) {
  if ( is_admin() && !isset( $_GET['orderby'] ) ) {     
    // Получаем тип записи из запроса
    $post_type = $wp_query->query['post_type'];
    if ( in_array( $post_type, array('videos','news','text') ) ) {
      $wp_query->set('orderby', 'date');
      $wp_query->set('order', 'DESC');
    }
  }
}
add_filter('pre_get_posts', 'wpse_819391_post_types_admin_order');
10 дек. 2013 г. 01:40:23
0

Я использовал немного другой подход:

    add_action('pre_get_posts', 'filter_posts_list'); 

    function filter_posts_list($query)  {
        //$pagenow содержит имя текущей просматриваемой страницы
         global $pagenow, $typenow;  
        if(current_user_can('edit_posts') && ('edit.php' == $pagenow))  { 
            //метод set() глобального $query для установки параметров
            $query->set('orderby', 'date');
            $query->set('order', 'desc');
        }
    }
28 нояб. 2019 г. 13:39:20
0

Измените аргумент hierarchical на false или удалите эту строку, чтобы использовать значение по умолчанию false.

'hierarchical' => false,

https://developer.wordpress.org/reference/functions/register_post_type/#parameters

15 июн. 2024 г. 18:38:56