Таксономии в WordPress — это удобный инструмент для группировки и классификации контента. Однако часто возникает задача не просто создать таксономию вручную через админку, а автоматизировать процесс её создания и удаления, например, при активации или деактивации плагина, или в рамках миграции данных. В этой статье мы разберем, как правильно и эффективно автоматизировать управление таксономиями с помощью кода.
Что такое таксономии и зачем их автоматизировать
Таксономии — это способы структурирования записей, например категории и метки. Часто для кастомных проектов требуется создавать собственные таксономии под определённые типы записей (Custom Post Types). Автоматизация нужна, чтобы:
- Обеспечить удобство установки плагина или темы без ручного вмешательства;
- Избежать ошибок при удалении устаревших таксономий;
- Обеспечить согласованность данных и упрощённое сопровождение;
- Выполнять массовые операции с таксономиями с помощью скриптов.
Рассмотрим, как это реализовать на практике.
Автоматическое создание таксономии при активации плагина или темы
Хорошей практикой считается регистрировать таксономии в хуке init. Чтобы автоматизировать регистрацию и быть уверенным, что таксономия создаётся при включении функционала, можно использовать так называемую функцию активации плагина.
Пример кода для регистрации таксономии wpcoder_topic для кастомного типа записей wpcoder_post:
function wpcoder_register_taxonomy() {
$labels = array(
'name' => 'Темы',
'singular_name' => 'Тема',
'search_items' => 'Поиск тем',
'all_items' => 'Все темы',
'edit_item' => 'Редактировать тему',
'update_item' => 'Обновить тему',
'add_new_item' => 'Добавить новую тему',
'new_item_name' => 'Название новой темы',
'menu_name' => 'Темы',
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array('slug' => 'topic'),
);
register_taxonomy('wpcoder_topic', array('wpcoder_post'), $args);
}
add_action('init', 'wpcoder_register_taxonomy');Чтобы гарантировать, что таксономия будет создана и доступна, можно добавить функцию активации плагина:
function wpcoder_plugin_activate() {
wpcoder_register_taxonomy();
flush_rewrite_rules(); // обновляем правила пермалинков
}
register_activation_hook(__FILE__, 'wpcoder_plugin_activate');Обратите внимание, что вызов flush_rewrite_rules() необходим, чтобы WordPress пересоздал правила для новых URL таксономий.
Автоматическое удаление таксономии при деактивации плагина
WordPress не предоставляет штатного способа удалить таксономию из базы данных, потому что она не хранится как отдельная сущность, а лишь описывается в коде. Однако при деактивации плагина стоит очистить связанные данные, например, терминов таксономии, чтобы не оставлять мусор.
Пример удаления всех терминов таксономии при деактивации плагина:
function wpcoder_plugin_deactivate() {
$taxonomy = 'wpcoder_topic';
if (taxonomy_exists($taxonomy)) {
$terms = get_terms(array(
'taxonomy' => $taxonomy,
'hide_empty' => false,
));
if (!is_wp_error($terms)) {
foreach ($terms as $term) {
wp_delete_term($term->term_id, $taxonomy);
}
}
}
flush_rewrite_rules(); // обновляем правила пермалинков
}
register_deactivation_hook(__FILE__, 'wpcoder_plugin_deactivate');Этот код удалит все термины таксономии и обновит правила пермалинков, чтобы ссылки на таксономию перестали работать.
Работа с таксономиями через WP-CLI для автоматизации
Если вы управляете несколькими сайтами или хотите автоматизировать создание таксономий через командную строку, WP-CLI предлагает удобные инструменты. К сожалению, штатных команд для таксономий нет, но можно создать собственный WP-CLI-командлет.
Пример простого WP-CLI-командлета для регистрации таксономии:
if (class_exists('WP_CLI')) {
class WPCoder_Taxonomy_CLI {
public function create($args, $assoc_args) {
// Регистрация таксономии с параметрами из $assoc_args
$taxonomy = $args[0] ?? 'wpcoder_topic';
$post_type = $assoc_args['post_type'] ?? 'post';
register_taxonomy($taxonomy, $post_type, array('hierarchical' => true));
WP_CLI::success("Таксономия $taxonomy зарегистрирована для типа $post_type");
}
}
WP_CLI::add_command('wpcoder taxonomy', 'WPCoder_Taxonomy_CLI');
}<Эту команду можно вызвать так:
wp wpcoder taxonomy create wpcoder_topic --post_type=wpcoder_post
Это поможет автоматизировать регистрацию таксономий в рамках CI/CD или массового обновления сайтов.
Рекомендации по использованию плагинов для управления таксономиями
Для удобства управления таксономиями можно использовать плагины, например Clearfy Pro, который помогает оптимизировать и настраивать различные аспекты WordPress, включая таксономии.
Однако если вы стремитесь к максимальной кастомизации и автоматизации, то лучше использовать собственный код, как показано выше, поскольку это даёт полный контроль и лёгкость интеграции в ваши процессы разработки.
Заключение по автоматизации таксономий
Автоматизация создания и удаления таксономий в WordPress с помощью кода — это важный навык для разработчиков, работающих с кастомными проектами. Следуя описанным практикам, вы сможете:
- Обеспечить корректную регистрацию и удаление таксономий;
- Избежать ошибок с пермалинками и мусором в базе данных;
- Интегрировать автоматизацию в процессы активации и деактивации плагинов;
- Использовать WP-CLI для удобного управления.
Если вы хотите расширить функциональность, обратите внимание на WPCommunity — плагин для создания социальной сети в WordPress, где грамотное управление таксономиями особенно важно.