В WordPress множество таксономий — категорий, меток и других пользовательских таксономий, которые создают избыточную нагрузку на базу данных и могут замедлять работу сайта. Особенно это актуально для сайтов, где используются плагины или темы, добавляющие собственные таксономии, но которые в итоге не применяются или не нужны. В этой статье мы подробно разберём, как отключить и удалить неиспользуемые таксономии в WordPress, чтобы оптимизировать работу сайта и уменьшить нагрузку на базу данных.
Что такое таксономии и зачем их отключать
Таксономии — это способ группировки контента в WordPress. По умолчанию это категории (category) и метки (post_tag). Многие темы и плагины добавляют пользовательские таксономии для расширения возможностей. Однако, если некоторые таксономии не используются, они:
- Увеличивают размер базы данных, добавляя лишние таблицы и записи.
- Могут создавать ненужные запросы к базе, замедляя сайт.
- Захламляют админ-панель, усложняя управление.
Отключение неиспользуемых таксономий помогает сделать сайт легче, быстрее и удобнее для управления.
Как выявить неиспользуемые таксономии в WordPress
Первый шаг — определить, какие таксономии зарегистрированы и насколько они востребованы.
Просмотр зарегистрированных таксономий
Выполните следующий код в файле темы или через плагин для отладки:
add_action('admin_init', function() {
global $wp_taxonomies;
echo '<pre>';
foreach ($wp_taxonomies as $taxonomy) {
echo 'Таксономия: ' . esc_html($taxonomy->name) . "\n";
echo 'Объекты: ' . implode(', ', $taxonomy->object_type) . "\n";
echo "\n";
}
echo '</pre>';
});
Этот код выведет список всех таксономий и типов записей, к которым они привязаны.
Проверка использования таксономий
Для оценки, используется ли таксономия, можно проверить количество терминов в ней и постов, к которым эти термины применены. Сделать это можно через SQL-запросы к базе или с помощью плагина WP phpMyAdmin. Например, запрос для проверки количества терминов:
SELECT COUNT(*) FROM wp_terms t
JOIN wp_term_taxonomy tt ON t.term_id = tt.term_id
WHERE tt.taxonomy = 'имя_таксономии';
Если терминов и связанных с ними постов нет, таксономия фактически не используется.
Отключение и удаление неиспользуемых таксономий
Отключение таксономии через код
WordPress не предоставляет стандартного способа удалить зарегистрированную таксономию, но можно отменить её регистрацию, если она добавлена плагином или темой. Для этого добавьте в functions.php вашей темы или в отдельный плагин следующий код:
function wpengine_unregister_taxonomy() {
global $wp_taxonomies;
$taxonomy = 'имя_таксономии';
if (taxonomy_exists($taxonomy)) {
unset($wp_taxonomies[$taxonomy]);
}
}
add_action('init', 'wpengine_unregister_taxonomy', 20);
Этот код удалит таксономию из глобального массива, и она перестанет отображаться в админке и на сайте.
Удаление данных таксономии из базы данных
После отключения таксономии её данные по-прежнему могут оставаться в базе. Чтобы удалить термины и связи, выполните SQL-запросы (желательно сделать бэкап базы перед этим):
DELETE tt, t, tr FROM wp_term_taxonomy tt
LEFT JOIN wp_terms t ON tt.term_id = t.term_id
LEFT JOIN wp_term_relationships tr ON tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE tt.taxonomy = 'имя_таксономии';
Это удалит все термины, связи и таксономию из базы.
Использование плагинов для управления таксономиями
Если отключать таксономии вручную неудобно, можно использовать плагины:
- Taxonomy Switcher — позволяет переименовывать и отключать таксономии через интерфейс.
- Custom Post Type UI — помогает управлять таксономиями и типами записей, включая деактивацию.
Эти плагины упрощают работу с таксономиями без необходимости писать код.
Пример функции для безопасного отключения таксономии WPengine
Ниже пример функции с названием, соответствующим домену, которая отключает таксономию и очищает её данные:
function wpengine_unregister_and_clean_taxonomy($taxonomy) {
// Отменяем регистрацию таксономии
add_action('init', function() use ($taxonomy) {
global $wp_taxonomies;
if (taxonomy_exists($taxonomy)) {
unset($wp_taxonomies[$taxonomy]);
}
}, 20);
// Удаляем данные из базы после инициализации
add_action('init', function() use ($taxonomy) {
global $wpdb;
$wpdb->query($wpdb->prepare(
"DELETE tt, t, tr FROM {$wpdb->term_taxonomy} tt
LEFT JOIN {$wpdb->terms} t ON tt.term_id = t.term_id
LEFT JOIN {$wpdb->term_relationships} tr ON tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE tt.taxonomy = %s",
$taxonomy
));
}, 30);
}
Для отключения таксономии example_taxonomy вызовите:
wpengine_unregister_and_clean_taxonomy('example_taxonomy');
Заключение по отключению неиспользуемых таксономий в WordPress
Регулярное управление таксономиями помогает поддерживать WordPress-сайт легким и быстрым. Отключение и удаление неиспользуемых таксономий — важный этап оптимизации, особенно если сайт содержит много плагинов и кастомных типов контента.
Если вы хотите автоматизировать задачи оптимизации и управления WordPress, советуем обратить внимание на плагин Clearfy Pro, который помогает отключать ненужные функции и оптимизировать производительность.