Добавление пользовательской колонки к обзору произвольного типа записи в админке

23 янв. 2017 г., 22:05:21
Просмотры: 14.6K
Голосов: 2

У меня есть произвольный тип записи под названием events. В админке я могу просматривать список всех этих записей:

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

Как видно, в этом обзоре есть три колонки: Заголовок, Метки и Дата. Каждая из этих записей events имеет произвольное поле с названием eventDate.

Мой вопрос: как я могу добавить сортируемую колонку eventDate в этот обзор записей (как на изображении выше)?

1
Комментарии

хорошо, я только что нашел эту ссылку: http://www.deluxeblogtips.com/add-custom-column/ НО как сделать колонку сортируемой?

beta beta
23 янв. 2017 г. 22:16:57
Все ответы на вопрос 3
0

Хорошо, я сам нашёл ответ. Чтобы помочь тем, кто будет читать это в будущем, вот что я сделал:

1) Здесь объясняется, как добавить колонку: http://www.deluxeblogtips.com/add-custom-column/

2) Здесь объясняется, как добавить сортируемую колонку: https://wordpress.org/support/topic/admin-column-sorting/

23 янв. 2017 г. 22:49:31
2

Хуки для создания пользовательских колонок и связанных с ними данных для пользовательского типа записи - это manage_{$post_type}_posts_columns и manage_{$post_type}_posts_custom_column соответственно, где {$post_type} - это название пользовательского типа записи.

Этот пример из документации удаляет колонку автора и добавляет колонки для таксономии и метаданных:

// Добавляем пользовательские колонки для типа записи 'book':
    add_filter( 'manage_book_posts_columns', 'set_custom_edit_book_columns' );
    function set_custom_edit_book_columns($columns) {
        unset( $columns['author'] );
        $columns['book_author'] = __( 'Автор', 'your_text_domain' );
        $columns['publisher'] = __( 'Издатель', 'your_text_domain' );

        return $columns;
    }

    // Добавляем данные в пользовательские колонки для типа записи 'book':
    add_action( 'manage_book_posts_custom_column' , 'custom_book_column', 10, 2 );
    function custom_book_column( $column, $post_id ) {
        switch ( $column ) {

            case 'book_author' :
                $terms = get_the_term_list( $post_id , 'book_author' , '' , ',' , '' );
                if ( is_string( $terms ) )
                    echo $terms;
                else
                    _e( 'Не удалось получить автора(ов)', 'your_text_domain' );
                break;

            case 'publisher' :
                echo get_post_meta( $post_id , 'publisher' , true ); 
                break;

        }
    }

Скопировано из существующего ответа.

10 окт. 2017 г. 13:56:19
Комментарии

Столбец сортируемый?

beta beta
10 окт. 2017 г. 14:35:55

Нет, эти столбцы не сортируются... Вам нужно сделать их сортируемыми...

Pravin Work Pravin Work
11 окт. 2017 г. 10:47:03
0

Вот полный код для этого:

add_filter('manage_edit-video_columns', 'my_columns');
function my_columns($columns) {
    $columns['eventDate'] = 'Дата события';
    return $columns;
}

add_action('manage_posts_custom_column',  'my_show_columns');
function my_show_columns($name) {
    global $post;
    switch ($name) {
        case 'eventDate':
            $eventDate = get_post_meta($post->ID, 'eventDate', true);
            echo $eventDate;
    }
}

add_filter( 'manage_edit-video_sortable_columns', 'my_sortable_date_column' );
function my_sortable_date_column( $columns ) {
    $columns['eventDate'] = 'Дата события';

    return $columns;
}

Спасибо

10 окт. 2017 г. 15:06:10