В работе с WordPress часто возникает задача динамического управления категориями: создавать их автоматически при добавлении новых записей или удалять неиспользуемые. Особенно это актуально для крупных сайтов с большим количеством контента и частыми обновлениями. В этой статье мы разберём, как на практике автоматизировать создание и удаление тематических категорий в WordPress с помощью своего кода и популярных плагинов.
Почему автоматизация категорий важна для управления контентом
Категории помогают структурировать записи, улучшать навигацию и SEO. Но ручное управление ими может быть утомительным и ошибочным. Например, при импорте большого количества записей с разными тематиками нужно создавать категории вручную или через интерфейс, что занимает много времени.
Автоматизация позволяет:
- Создавать категории по определённым признакам записи сразу при её добавлении или обновлении.
- Удалять категории, которые больше не используются, чтобы не засорять базу.
- Обеспечивать консистентность структуры сайта без лишних действий.
Теперь рассмотрим, как реализовать эти задачи через код.
Автоматическое создание категорий при публикации записи — пример кода
Допустим, у вас есть пользовательское поле с названием тематики записи, и вы хотите, чтобы при публикации записи соответствующая категория создавалась, если её ещё нет.
Для этого используем хук save_post и функцию wpcoder_auto_create_category:
function wpcoder_auto_create_category($post_id) {
// Проверяем, что это не автосохранение
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
// Проверяем права пользователя
if (!current_user_can('edit_post', $post_id)) return;
// Получаем значение пользовательского поля 'thematic'
$thematic = get_post_meta($post_id, 'thematic', true);
if (empty($thematic)) return;
// Проверяем, есть ли категория с таким именем
$term = get_term_by('name', $thematic, 'category');
if (!$term) {
// Создаём новую категорию
$new_term = wp_insert_term($thematic, 'category');
if (is_wp_error($new_term)) return;
$term_id = $new_term['term_id'];
} else {
$term_id = $term->term_id;
}
// Присваиваем категорию записи
wp_set_post_terms($post_id, array($term_id), 'category', true);
}
add_action('save_post', 'wpcoder_auto_create_category');Этот код автоматически создаёт категорию с названием из мета-поля thematic, если её нет, и присваивает её записи при сохранении.
Удаление неиспользуемых категорий — как очистить базу от мусора
Со временем на сайте могут накапливаться категории, к которым не привязаны записи. Их лучше удалять автоматически, чтобы не нагромождать структуру.
Для этого можно использовать крон-задачу WordPress и собственную функцию, которая будет проверять количество записей в категориях и удалять пустые.
Пример функции wpcoder_delete_empty_categories:
function wpcoder_delete_empty_categories() {
$args = array(
'taxonomy' => 'category',
'hide_empty' => false,
);
$categories = get_terms($args);
foreach ($categories as $category) {
if ($category->count == 0) {
wp_delete_term($category->term_id, 'category');
}
}
}
// Регистрируем событие крон, если ещё не зарегистрировано
if (!wp_next_scheduled('wpcoder_cron_delete_empty_categories')) {
wp_schedule_event(time(), 'daily', 'wpcoder_cron_delete_empty_categories');
}
add_action('wpcoder_cron_delete_empty_categories', 'wpcoder_delete_empty_categories');Этот код ежедневно запускает проверку и очищает категории без записей. Это удобно для поддержания чистоты в базе.
Использование плагина Clearfy Pro для расширенной работы с категориями
Если вы не хотите писать код самостоятельно, можно использовать плагин Clearfy Pro. Он помогает оптимизировать работу с категориями, в том числе автоматизировать создание и удаление, а также управлять SEO-настройками.
Плагин позволяет создавать шаблоны категорий, автоматически присваивать их определённым типам записей и удалять пустые категории без необходимости писать код.
Clearfy Pro отлично впишется в рабочий процесс разработчика, позволяя сосредоточиться на более важных задачах.
Особенности и рекомендации по автоматизации категорий
При автоматизации категорий стоит учитывать несколько важных моментов:
- Всегда проверяйте права пользователя и условия сохранения записи, чтобы избежать ошибок и нежелательных действий.
- Используйте транзакции или проверки ошибок при создании категорий, чтобы не создавать дубли.
- Регулярно очищайте базу от неиспользуемых категорий, чтобы поддерживать производительность.
- Тестируйте изменения на тестовом окружении перед внедрением на живой сайт.
Следуя этим рекомендациям, вы сможете значительно упростить управление тематическими категориями и сделать сайт более структурированным и удобным для пользователей.