Вопрос или проблема
add_action( ‘init’, ‘create_topics_nonhierarchical_taxonomy’, 0 );
function create_topics_nonhierarchical_taxonomy() {
// Метки для интерфейса
$labels = array(
‘name’ => _x( ‘Теги блога’, ‘taxonomi общая имя’ ),
‘singular_name’ => _x( ‘Тег блога’, ‘taxonomi единственное имя’ ),
‘search_items’ => __( ‘Поиск тегов блога’ ),
‘popular_items’ => __( ‘Популярные теги блога’ ),
‘all_items’ => __( ‘Все теги блога’ ),
‘parent_item’ => null,
‘parent_item_colon’ => null,
‘edit_item’ => __( ‘Редактировать теги блога’ ),
‘update_item’ => __( ‘Обновить теги блога’ ),
‘add_new_item’ => __( ‘Добавить новый тег блога’ ),
‘new_item_name’ => __( ‘Новое имя тега блога’ ),
‘separate_items_with_commas’ => __( ‘Отделяйте теги блога запятыми’ ),
‘add_or_remove_items’ => __( ‘Добавить или удалить теги блога’ ),
‘choose_from_most_used’ => __( ‘Выберите из самых популярных тегов блога’ ),
‘menu_name’ => __( ‘Теги блога’ ),
);
// Теперь регистрируем неиерархическую таксономию как тег
register_taxonomy(‘blog_tags’,’blog_tags’,array(
‘hierarchical’ => false,
‘labels’ => $labels,
‘show_ui’ => true,
‘show_admin_column’ => true,
‘update_count_callback’ => ‘_update_post_term_count’,
‘query_var’ => true,
‘rewrite’ => array( ‘slug’ => ‘blog_tags’ ),
));
}
Ваш второй параметр функции register_taxonomy
должен быть типом записи, к которому вы хотите применить таксономию, или массивом типов записей.
register_taxonomy('blog_tags','post',array(
'hierarchical' => false,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'update_count_callback' => '_update_post_term_count',
'query_var' => true,
'rewrite' => array( 'slug' => 'blog_tags' ),
));
Это заставит эту таксономию появиться для встроенного типа записи post
.
Что вам нужно сделать, так это указать как пользовательский тип записи, который вы используете, так и таксономию, которую вы регистрируете. В вашем коде вы использовали blog_tags
для обоих, и это не сработает.
Если вы хотите добавить таксономию tag
к пользовательскому типу записи blogs
, вы должны сделать это следующим образом:
register_taxonomy('tag', 'blogs', array(
'hierarchical' => false,
'labels' => $labels,
'show_ui' => true,
'update_count_callback' => '_update_post_term_count',
'query_var' => true,
'rewrite' => array( 'slug' => 'tag' ),
));
Ответ или решение
Таксономия тегов в WordPress — это мощный инструмент для организации и классификации контента. Однако, по описанию вашей проблемы, кажется, что в коде, который вы предоставили для регистрации таксономии, есть несколько нюансов, которые могут вызывать проблемы. Давайте рассмотрим их более подробно.
1. Проверка параметров функции register_taxonomy
Функция register_taxonomy
принимает два основных параметра: первый — это название таксономии, а второй — это тип поста, к которому она будет привязана. В вашем начальном коде:
register_taxonomy('blog_tags','blog_tags',array(
...
));
второй параметр установлен на 'blog_tags'
, что неправильно. Правильный вариант — указать существующий тип поста, к которому вы хотите добавить таксономию. Например, если вы хотите, чтобы ваша таксономия работала с стандартными постами (post), вам нужно изменить его на:
register_taxonomy('blog_tags', 'post', array(
...
));
Таким образом, это позволит таксономии появляться в интерфейсе редактирования для стандартного типа поста.
2. Использование пользовательского типа поста
Если у вас есть пользовательский тип поста, например 'blogs'
, и вы хотите, чтобы для него работала ваша таксономия, то вы должны указать именно этот тип:
register_taxonomy('blog_tags', 'blogs', array(
...
));
Эта строка делает так, что таксономия будет активна для вашего пользовательского типа постов.
3. Проверьте области видимости
Убедитесь также, что:
- Параметр
'show_ui'
установлен в true
, чтобы интерфейс администрирования отображал вашу таксономию.
- Параметр
'show_admin_column'
также установлен в true
, чтобы таксономия отображалась в колонках админки.
4. Регистрируйте таксономию корректно
Убедитесь, что код регистрации таксономии расположен в правильном месте, например, в файле functions.php вашей темы или в отдельном плагине. Не забывайте об использовании хука init
, как в вашем изначальном примере. Корректная структура будет выглядеть следующим образом:
add_action('init', 'create_topics_nonhierarchical_taxonomy', 0);
function create_topics_nonhierarchical_taxonomy() {
$labels = array(
'name' => _x('Blog Tags', 'taxonomy general name'),
...
);
register_taxonomy('blog_tags', 'post', array( // Замените 'post' на ваш тип поста, если нужно
'hierarchical' => false,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'update_count_callback' => '_update_post_term_count',
'query_var' => true,
'rewrite' => array('slug' => 'blog_tags'),
));
}
5. Тестирование после внесенных изменений
После внесения изменений сохраните файл и проверьте, появилась ли таксономия на странице редактирования постов. Если после внесения всех правок таксономия все еще не отображается, следующие шаги могут включать:
- Очищение кэша, если у вас есть плагин кэширования.
- Проверка наличия конфликтов с другими плагинами.
- Переключение на стандартную тему WordPress, чтобы убедиться, что проблема не в теме.
Заключение
Правильная регистрация таксономий в WordPress предоставляет мощные возможности для управления контентом вашего сайта. Если вы будете следовать указанным выше рекомендациям, это должно помочь вам устранить возникшие проблемы и успешно использовать таксономию тегов.
Используйте описанные шаги как основу для устранения проблем с таксономиями. Удачи в ваших разработках!