Шорткоды — мощный инструмент WordPress, позволяющий легко вставлять динамический контент в записи, страницы и виджеты. Но со временем, когда вы меняете тему, отключаете или удаляете плагины, в базе данных могут оставаться неиспользуемые шорткоды, которые вызывают ошибки или отображаются как текст. В этой статье мы подробно разберем, как найти и удалить такие шорткоды, а также оптимизировать работу сайта, чтобы избавиться от лишнего кода.
Что такое неиспользуемые шорткоды и почему их нужно удалять
Неиспользуемые шорткоды — это шорткоды, определенные в коде темы или плагинах, которые сейчас отключены или удалены, но при этом остаются в контенте записей и страниц. При выводе такого контента WordPress не может обработать шорткод, и он выводится как есть, например [old_shortcode], что выглядит некрасиво и сбивает с толку пользователей.
Удаление неиспользуемых шорткодов позволяет:
- Избавиться от визуального мусора на сайте.
- Улучшить скорость загрузки и рендеринга страниц.
- Снизить вероятность конфликтов и ошибок PHP.
- Облегчить поддержку и развитие сайта.
Если не удалять шорткоды, они могут накапливаться, особенно при частой смене плагинов и тем, что создает технический долг.
Как найти неиспользуемые шорткоды на сайте WordPress
Первый шаг — определить, какие именно шорткоды используются в базе данных вашего сайта. Для этого полезно просканировать содержимое записей, страниц и других типов контента на наличие шорткодов.
Самый простой способ — использовать SQL-запрос к базе данных. Например, чтобы найти все записи, содержащие шорткоды, можно выполнить такой запрос в phpMyAdmin или через WP-CLI:
SELECT ID, post_title, post_content FROM wp_posts WHERE post_content LIKE '%[%]%';Этот запрос показывает все записи, где встречаются символы [ и ], то есть потенциально содержащие шорткоды.
Однако это лишь первый шаг, дальше нужно распарсить контент и выявить конкретные шорткоды. Для этого можно написать PHP-скрипт, который использует функцию has_shortcode():
function wpkit_find_all_shortcodes() {
global $wpdb;
$posts = $wpdb->get_results("SELECT ID, post_content FROM {$wpdb->posts} WHERE post_type IN ('post','page') AND post_status = 'publish'");
$shortcodes_found = [];
foreach ($posts as $post) {
preg_match_all('/\[([^\]\s]+)(\s[^\]]*)?\]/', $post->post_content, $matches);
if (!empty($matches[1])) {
foreach ($matches[1] as $shortcode) {
if (!isset($shortcodes_found[$shortcode])) {
$shortcodes_found[$shortcode] = [];
}
$shortcodes_found[$shortcode][] = $post->ID;
}
}
}
return $shortcodes_found;
}Этот код ищет все шорткоды в опубликованных постах и страницах и собирает их в массив с ID записей. По этому массиву вы можете понять, какие шорткоды используются и где.
Проверка зарегистрированных шорткодов
Чтобы понять, какие шорткоды сейчас зарегистрированы в системе, используйте функцию shortcode_exists() или получите все через глобальный массив:
global $shortcode_tags;
print_r(array_keys($shortcode_tags));Сравните список найденных в базе шорткодов с зарегистрированными — те, что есть в базе, но отсутствуют в списке, и считаются неиспользуемыми.
Удаление неиспользуемых шорткодов из контента базы данных
Удалять шорткоды вручную неудобно и рискованно, особенно если их много. Лучше автоматизировать процесс.
Использование плагина WP Shortcode Remover
Плагин WP Shortcode Remover позволяет автоматически убрать неработающие шорткоды из контента. Плагин сканирует записи и заменяет нераспознанные шорткоды на пустую строку или другой текст.
Просто установите и активируйте плагин, настройте параметры удаления и запустите процесс.
Ручное удаление через PHP-скрипт
Если хотите больше контроля, можно написать функцию, которая удалит указанные шорткоды из базы данных:
function wpkit_remove_shortcode_from_posts($shortcode) {
global $wpdb;
$pattern = '\\[' . preg_quote($shortcode, '/') . '(\s[^\]]*)?\\]';
$posts = $wpdb->get_results("SELECT ID, post_content FROM {$wpdb->posts} WHERE post_content LIKE '%['$shortcode'%'");
foreach ($posts as $post) {
$new_content = preg_replace('/' . $pattern . '/', '', $post->post_content);
if ($new_content !== $post->post_content) {
$wpdb->update(
$wpdb->posts,
['post_content' => $new_content],
['ID' => $post->ID]
);
}
}
}
// Пример вызова функции для удаления шорткода [old_shortcode]
wpkit_remove_shortcode_from_posts('old_shortcode');Этот скрипт ищет и удаляет все вхождения конкретного шорткода в контенте записей и страниц.
Рекомендации по предотвращению появления неиспользуемых шорткодов
Чтобы минимизировать проблемы с неиспользуемыми шорткодами в будущем, следуйте простым советам:
- Перед удалением плагина или темы, отключите связанные шорткоды и замените их в контенте.
- Используйте кастомные поля или блоки Gutenberg вместо шорткодов, если это возможно — так легче управлять содержимым.
- Регулярно проверяйте базу данных на наличие нераспознанных шорткодов.
- Для сложных проектов создавайте централизованный реестр шорткодов, чтобы быстро видеть их статус.
Заключение
Удаление неиспользуемых шорткодов — важный этап технического обслуживания WordPress-сайта. Это позволяет избежать ошибок отображения, улучшить производительность и облегчить поддержку. В статье мы рассмотрели методы поиска, анализа и удаления таких шорткодов, а также примеры кода и полезные плагины для автоматизации задач. Регулярное проведение таких процедур поможет вашему сайту оставаться чистым и быстрым.