Вопрос или проблема
Я пытаюсь добавить колонку в один из своих пользовательских типов записей, но только на странице редактирования таксономии.
У меня зарегистрирована таксономия “event-categories” для моего пользовательского типа записей “events”.
Я могу успешно добавить пользовательскую колонку на экран редактирования пользовательского типа записей, но не могу заставить хук работать на странице редактирования таксономии.
Погружаясь в некоторые из основных файлов, я смог локализовать хук
$taxonomies = apply_filters( "manage_taxonomies_for_{$post_type}_columns", $taxonomies, $post_type );
внутри class-wp-posts-list-table.php
, что заставляет меня верить, что это возможно, и добавлять пользовательские колонки на этой странице. Но когда я пытаюсь добавить колонку, ничего на самом деле не происходит.
function events_color_column($defaults) {
$defaults['event_cat_color'] = 'Цвет категории события';
return $defaults;
}
function events_column_content($column_name, $post_ID) {
if ($column_name == 'event_cat_color') {
echo 'Цвет события : #2432';
}
}
add_filter('manage_taxonomies_for_events_columns', 'events_color_column');
add_action('manage_taxonomies_for_events_column', 'events_color_column_content', 10, 2);
но если я просто изменю фильтр+действие на ‘manage_events_columns’ и ‘manage_events_column’, все работает на экране пользовательского типа записей.
Может кто-то увидеть, что я делаю не так, или это ошибка, которую нужно исправить в ядре?
Правка:
Мне удалось добавить в хуки на странице пользовательской таксономии, чтобы отображать заголовок колонки, сделав следующее:
Для любого, кто сталкивается с подобными проблемами, необходимо передать идентификатор страницы. Для меня сработало следующее:
add_filter('manage_edit-event_categories_columns', 'events_color_column');
Но я не могу понять, почему контент не выводится в каждую колонку, используя
add_action('manage_edit-event_categories_custom_column', 'events_color_column_content', 10, 2);
Я также пробовал передать имя таксономии, имя типа записи, но ничего не работает. Что я здесь упускаю?
Окончательные работающие хуки, которые мне удалось выяснить, это:
// добавление дополнительной колонки на страницу event_categories
// для отображения цвета
function events_color_column($defaults) {
$defaults['event_cat_color'] = 'Цвет категории события';
return $defaults;
}
function events_color_column_content($column_name, $post_ID) {
echo 'Цвет события : #2432';
}
add_filter('manage_edit-event_categories_columns', 'events_color_column');
add_action('manage_event_categories_custom_column', 'events_color_column_content', 10, 2);
Используя
if ($column_name == 'event_cat_color') {
echo 'Цвет события : #2432';
}
не сработало с этим хуком действия. Удаление условия и просто echo вывода работает.
незначительные проблемы в вашем коде, которые необходимо исправить
В вызове add_action вы используете неправильное имя функции
events_color_column_content
вместо events_column_content
Хук, который вы используете, должен быть manage_edit-{taxonomy}_custom_column
для пользовательских столбцов таксономии, а не manage_edit-{taxonomy}_columns
.
function events_color_column($columns) {
$columns['event_cat_color'] = 'Цвет категории события';
return $columns;
}
function events_column_content($content, $column_name, $term_id) {
if ($column_name == 'event_cat_color') {
$content="Цвет события : #2432";
}
return $content;
}
add_filter('manage_edit-event_categories_columns', 'events_color_column');
add_action('manage_event_categories_custom_column', 'events_column_content', 10, 3);
Ответ или решение
Как добавить пользовательский столбец в таксономию на странице редактирования CPT (пользовательского типа записи)
В мире разработки WordPress иногда может возникнуть необходимость добавить пользовательские столбцы на страницы редактирования таксономий для пользовательских типов записей. В этой статье мы исследуем, как добавить кастомный столбец к таксономии event-categories
, связанной с пользовательским типом записи events
.
Шаг 1: Добавление заголовка столбца
Сначала создадим функцию, которая добавит заголовок нового столбца в таблицу таксономий. Для этого мы используем фильтр manage_edit-{taxonomy}_columns
. В нашем случае таксономия называется event_categories
, поэтому мы будем использовать manage_edit-event_categories_columns
.
function events_color_column($columns) {
$columns['event_cat_color'] = 'Цвет категории события'; // Заголовок столбца
return $columns;
}
add_filter('manage_edit-event_categories_columns', 'events_color_column');
Шаг 2: Добавление контента в столбец
Теперь, когда мы добавили заголовок столбца, необходимо создать функцию, которая будет отображать контент в этом столбце. Мы используем хук manage_{taxonomy}_custom_column
, который в нашем случае будет manage_event_categories_custom_column
.
function events_column_content($content, $column_name, $term_id) {
if ($column_name == 'event_cat_color') {
$content = 'Цвет события: #2432'; // Данные для отображения в столбце
}
return $content;
}
add_action('manage_event_categories_custom_column', 'events_column_content', 10, 3);
Общий итог
Теперь ваша кодовая база должна выглядеть примерно так:
// Добавление заголовка нового столбца
function events_color_column($columns) {
$columns['event_cat_color'] = 'Цвет категории события';
return $columns;
}
add_filter('manage_edit-event_categories_columns', 'events_color_column');
// Добавление контента в новый столбец
function events_column_content($content, $column_name, $term_id) {
if ($column_name == 'event_cat_color') {
$content = 'Цвет события: #2432'; // Измените на вашу логику получения цвета
}
return $content;
}
add_action('manage_event_categories_custom_column', 'events_column_content', 10, 3);
Заключение
В результате вы успешно добавили кастомный столбец на страницу редактирования таксономий вашего пользовательского типа записи. Теперь вы можете отображать любой контент в новом столбце, включая данные, полученные из базы данных или другие метаданные, связанные с вашими событиями. Такой подход увеличивает удобство управления данными и позволяет вам наглядно представлять дополнительную информацию.
Если у вас остались вопросы или вам нужна помощь с другими аспектами работы с WordPress, не стесняйтесь задавать их.