Добавление пользовательских столбцов в пользовательские типы сообщений

27

Я сделал это ранее, но я забыл название крючка и не могу найти его нигде ...

То, что я пытаюсь сделать, это добавить несколько пользовательских столбцов в список пользовательских типов сообщений в админке.

Например, в админке кликни по статьям , я хочу добавить туда свой столбец.

Чин Леунг
источник
я задал (и ответил) тот же вопрос (в том числе о том, как сделать их сортируемыми): wordpress.stackexchange.com/questions/253680/…
бета

Ответы:

57

Крючки для создания пользовательских столбцов и связанные с ними данными для пользовательского типа поста являются manage_{$post_type}_posts_columnsи , manage_{$post_type}_posts_custom_columnсоответственно, где {$post_type}этим имя пользовательского типа поста.

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

// Add the custom columns to the book post type:
add_filter( 'manage_book_posts_columns', 'set_custom_edit_book_columns' );
function set_custom_edit_book_columns($columns) {
    unset( $columns['author'] );
    $columns['book_author'] = __( 'Author', 'your_text_domain' );
    $columns['publisher'] = __( 'Publisher', 'your_text_domain' );

    return $columns;
}

// Add the data to the custom columns for the book post type:
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( 'Unable to get author(s)', 'your_text_domain' );
            break;

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

    }
}
Дэйв Ромси
источник
1
Спасибо за этот крючок !!! Это великолепно! Там нет четкой документации по stackoverflow !!! : D Ура, приятель
Родриго Зулуага
нет ли опции, чтобы установить номер столбца? как column_index[2]. Потому что custom_column появляется в конце столбца.
Дилип Гупта
@DilipGupta $ columns - это массив, вы можете изменить порядок, прежде чем вернуть его
fogx
0

Я не уверен, что это стандартные пользовательские метаданные, которые вы хотите отображать в виде столбцов, но вы можете использовать этот бесплатный плагин, который позволяет добавлять столбцы для отображения пользовательских полей. https://wordpress.org/plugins/codepress-admin-columns/

Профессиональная версия даже позволяет добавлять фильтрацию, сортировку и встроенное редактирование в эти столбцы.

DGStefan
источник
НЕ ИСПОЛЬЗОВАТЬ! Сломает ваш сайт: Неустранимая ошибка PHP: Невозможно повторно объявить AC () (ранее объявленный в [отредактированный] \\ wp-content \\ themes \ [redacted] \\ functions.php: 628) в [отредактированный] \\ wp-content \\ plugins \\ codepress-admin-columns \\ api.php в строке 9
Питер Кионга-Камау
@ PeterKionga-Kamau - это проблема совместимости с вашей конкретной темой. Отправленная вами ошибка не будет отображаться с темой WP по умолчанию (например, двадцать двадцать); Я также использую плагин с темой Divi и считаю его весьма полезным
Филипп
Есть ли какое-то пространство имен или использование менее общих имен функций, которые можно было бы использовать, чтобы избежать этого?
Питер Кионга-Камау