Шорткоды — удобный инструмент для вставки функционала и контента в записи и страницы WordPress. Однако со временем на сайте могут накопиться неиспользуемые или устаревшие шорткоды, которые вызывают ошибки отображения или лишний HTML-код. В этой статье подробно расскажем, как найти и удалить неиспользуемые шорткоды из контента WordPress, а также как безопасно отключить их регистрацию в коде.
Почему важно удалять неиспользуемые шорткоды
Оставленные без дела шорткоды в базе данных могут привести к нескольким проблемам:
- Появление на сайте некорректного вывода — вместо содержимого отображается текст шорткода, например
[old_shortcode]. - Ухудшение производительности из-за лишних обработок при загрузке страниц.
- Затруднения при обновлениях и миграциях — старый код не поддерживается и мешает развитию сайта.
Поэтому регулярная чистка и удаление неиспользуемых шорткодов помогает сделать сайт более стабильным и быстрым.
Как найти неиспользуемые шорткоды в базе данных WordPress
Первым этапом необходимо определить, какие шорткоды на сайте не используются, но все еще присутствуют в контенте. Для этого есть несколько способов.
Поиск вручную в админке
Можно воспользоваться функцией поиска по записям и страницам в редакторе WordPress, введя название шорткода в формате [shortcode]. Но это неудобно и долго для большого сайта.
Поиск через SQL-запрос
Более эффективно — выполнить SQL-запрос по таблице wp_posts для обнаружения всех записей, где встречается конкретный шорткод. Например, для шорткода [old_shortcode]:
SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%[old_shortcode%';По результатам запроса можно составить список страниц и записей, где используется шорткод.
Использование плагинов для поиска шорткодов
Существуют плагины, которые показывают все шорткоды, используемые на сайте, например:
- Shortcode Finder — сканирует контент и выводит список шорткодов.
- Clearfy Pro — в разделе оптимизации есть функция анализа и удаления неиспользуемых шорткодов.
Такие инструменты упрощают процесс и позволяют быстро получить полный обзор шорткодов.
Как программно удалить неиспользуемые шорткоды из контента
После того как вы выявили неиспользуемые шорткоды, нужно очистить контент записей и страниц, где они встречаются. Сделать это можно через PHP-код с помощью WP_Query и регулярных выражений.
Пример функции удаления шорткодов из контента
function wpin_remove_unused_shortcodes() {
$shortcodes_to_remove = array('old_shortcode', 'deprecated_shortcode');
$args = array(
'post_type' => array('post', 'page'),
'posts_per_page' => -1,
's' => '[', // Поиск по символу [
);
$query = new WP_Query($args);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
$post_id = get_the_ID();
$content = get_post_field('post_content', $post_id);
$original_content = $content;
foreach ($shortcodes_to_remove as $shortcode) {
// Регулярное выражение для удаления шорткода и его содержимого
$pattern = '/\[' . preg_quote($shortcode, '/') . '(\s[^\]]*)?\](.*?)\[\/'. preg_quote($shortcode, '/') .'\]/s';
$content = preg_replace($pattern, '', $content);
// Удаление одиночных шорткодов без закрывающего тега
$pattern_self_closing = '/\[' . preg_quote($shortcode, '/') . '(\s[^\]]*)?\/\]/';
$content = preg_replace($pattern_self_closing, '', $content);
// Удаление одиночных шорткодов без слеша
$pattern_single = '/\[' . preg_quote($shortcode, '/') . '(\s[^\]]*)?\]/';
$content = preg_replace($pattern_single, '', $content);
}
if ($content !== $original_content) {
wp_update_post(array(
'ID' => $post_id,
'post_content' => $content
));
}
}
wp_reset_postdata();
}
}
// Запуск функции один раз, например, через хук admin_init
add_action('admin_init', 'wpin_remove_unused_shortcodes');Эта функция перебирает все записи и страницы, ищет указанные в массиве шорткоды и удаляет их из контента, после чего обновляет запись.
Как отключить регистрацию неиспользуемых шорткодов
В WordPress шорткоды регистрируются функцией add_shortcode. Если плагин или тема, в которых зарегистрирован шорткод, больше не используются, лучше удалить их полностью. Если же код шорткода остался, но вы хотите просто отключить его, можно сделать так:
function wpin_disable_unused_shortcodes() {
remove_shortcode('old_shortcode');
remove_shortcode('deprecated_shortcode');
}
add_action('init', 'wpin_disable_unused_shortcodes', 20);Это предотвратит обработку и вывод шорткодов на фронтенде, но если они есть в базе данных — текст шорткода будет выводиться как есть. Поэтому комбинация удаления из базы и отключения регистрации — оптимальный подход.
Рекомендации по работе с шорткодами и их очистке
При работе с шорткодами важно соблюдать несколько правил:
- Перед массовой очисткой сделайте резервную копию базы данных.
- Проверьте, что удаляемые шорткоды действительно не нужны — посмотрите, не используются ли они в виджетах, настройках или в каких-то кастомных полях.
- Если есть сомнения, сначала отключите шорткод через
remove_shortcode, чтобы увидеть эффекты на сайте. - После удаления шорткодов из контента очистите кэш сайта и браузера.
Использование Clearfy Pro для очистки шорткодов
Плагин Clearfy Pro содержит инструменты для анализа и оптимизации сайта, в том числе для управления шорткодами. В нем есть возможность сканировать контент и удалять неиспользуемые шорткоды в несколько кликов, что значительно упрощает задачу.
Также Clearfy Pro помогает отключать неиспользуемые функции WordPress, что улучшает производительность и безопасность.
Выводы
Удаление неиспользуемых шорткодов — важный этап в поддержке и оптимизации сайта на WordPress. Используя SQL-запросы, плагины и собственные скрипты, можно эффективно очистить контент и избежать проблем с выводом на сайте. Обязательно комбинируйте удаление из базы с отключением регистрации шорткодов в коде.
Если хотите автоматизировать процесс, обратите внимание на Clearfy Pro — он поможет быстро найти и убрать лишние шорткоды, а также оптимизировать другие аспекты сайта.