Добавить пользовательский столбец в таблицу списка постов

Вопрос или проблема

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

Я также хочу получить конкретное значение из каждого поля (я создал два поля для вышеперечисленных столбцов), чтобы отобразить его в этих двух дополнительных столбцах. На самом деле я могу отобразить это с помощью кода ниже, но дело в том, что мне нужно объявить переменную (например: переменная $value) для каждой данных.

Поэтому, не могли бы вы поделиться идеями о том, как отобразить это с помощью циклов или чего-то подобного.

add_filter( 'manage_book_posts_columns', 'set_custom_edit_book_columns' );
add_action( 'manage_book_posts_custom_column' , 'custom_book_column', 10, 2 );

function set_custom_edit_book_columns($columns) {
    $value = get_field( "contact_person" );
    unset( $columns['author'] );
    $columns['book_author'] = __( 'Автор', 'your_text_domain' );
    $columns['publisher'] = __( 'Издатель', 'your_text_domain' );

    return $columns;
}

function custom_book_column( $column, $post_id ) {
    switch ( $column ) {

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

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

    }
}

Может быть, вам просто нужно изменить это на:

case 'book_author' :
    $value = get_field( "contact_person", $post_id );

Второй параметр, вероятно, необходим, так как он находится в цикле, но не в The Loop.

Ответ или решение

Добавление пользовательских колонок в таблицу постов — важная задача для оптимизации управления контентом в WordPress, особенно когда речь идет о пользовательских типах записей, таких как «Книга». В данном руководстве мы рассмотрим, как добавить пользовательские колонки для отображения информации о «Авторе книги» и «Издателе» с использованием пользовательских полей.

Шаг 1: Регистрация пользовательских колонок

Сначала мы будем использовать хук manage_book_posts_columns, чтобы добавить новые колонки в таблицу редактирования постов. Откройте файл functions.php вашей темы или создайте плагин для этого кода.

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;
}

Шаг 2: Заполнение пользовательских колонок

После того как колонки зарегистрированы, следующим шагом будет заполнение этих колонок данными по каждому посту. Для этого мы используем хук manage_book_posts_custom_column.

add_action('manage_book_posts_custom_column', 'custom_book_column', 10, 2);

function custom_book_column($column, $post_id) {
    switch ($column) {
        case 'book_author':
            $author_value = get_field("contact_person", $post_id); // Получаем значение поля для автора
            if ($author_value) {
                echo esc_html($author_value); // Отображаем значение, очищенное от потенциальных уязвимостей
            } else {
                _e('Не удалось получить автора(ов)', 'your_text_domain');
            }
            break;

        case 'publisher':
            $publisher_value = get_post_meta($post_id, 'publisher', true); // Получаем значение мета-поля для издателя
            if ($publisher_value) {
                echo esc_html($publisher_value); // Отображаем значение, очищенное от потенциальных уязвимостей
            } else {
                _e('Не удалось получить издателя', 'your_text_domain');
            }
            break;
    }
}

Объяснение кода

  1. Регистрация колонок:

    • Мы используем функцию set_custom_edit_book_columns, чтобы модифицировать существующие колонки и добавить book_author и publisher.
    • Удаление колонки автора может быть полезным, если вы хотите избежать дублирования информации.
  2. Заполнение колонок:

    • В функции custom_book_column мы используем get_field() для получения пользовательских данных, созданных с помощью плагина ACF (Advanced Custom Fields), или get_post_meta() для получения стандартных мета-данных.
    • Мы также добавили проверки на наличие данных и очистку вывода через esc_html(), чтобы защитить ваш сайт от потенциальных уязвимостей XSS.

Заключение

С помощью приведенного кода вы сможете успешно добавить и заполнить пользовательские колонки на странице редактирования ваших записей типа «Книга». Не забудьте протестировать функциональность на сайте, чтобы убедиться, что информация отображается корректно. Это не только улучшит управление вашими постами, но и повысит производительность вашей работы с содержимым.

Следуя этим рекомендациям, вы не только улучшите пользовательский интерфейс, но и сделаете процесс управления контентом более удобным и эффективным.

SEO Оптимизация

При написании этого руководства мы собрали полезные ключевые слова, такие как «WordPress», «пользовательские поля», «колонки постов» и «управление контентом», чтобы упростить поиск информации и увеличить видимость вашего контента в поисковых системах.

Оцените материал
Добавить комментарий

Капча загружается...