В процессе разработки и поддержки WordPress-сайтов часто возникает необходимость удалить неиспользуемые шорткоды. Они могут оставаться после удаления плагинов или тем, создавать ошибки отображения и замедлять работу сайта. В этой статье мы подробно разберем, как определить и безопасно удалить шорткоды без использования дополнительных плагинов.
Что такое шорткоды и почему важно удалять неиспользуемые
Шорткоды — это специальные метки в тексте, которые WordPress заменяет на динамический контент при отображении страницы. Например, [gallery] или [contact-form]. После удаления плагина или темы, которые их реализуют, шорткоды перестают распознаваться, и на сайте могут появляться их необработанные записи, что портит внешний вид и снижает производительность.
Удаление неиспользуемых шорткодов помогает:
- Избавиться от ошибок и некорректного отображения контента;
- Улучшить скорость загрузки страниц;
- Оптимизировать базу данных и код сайта.
Как найти неиспользуемые шорткоды в содержимом сайта
Первый шаг — определить, какие шорткоды остались в базе данных и не имеют обработчиков. Для этого можно выполнить SQL-запрос, который ищет записи с шорткодами:
SELECT ID, post_content FROM wp_posts WHERE post_content LIKE '%[%]%';Однако этот запрос покажет все записи с любыми шорткодами, включая активные. Чтобы выявить именно неработающие шорткоды, нужно сверить список зарегистрированных шорткодов с теми, что есть в базе.
Получить список зарегистрированных шорткодов можно с помощью функции WordPress:
function wpclean_get_registered_shortcodes() {
global $shortcode_tags;
return array_keys($shortcode_tags);
}Используя эту функцию, можно написать скрипт, который выведет все шорткоды, присутствующие в базе, и отметит не зарегистрированные — потенциально неиспользуемые.
Удаление неиспользуемых шорткодов через фильтр content
Если нужно просто убрать отображение нераспознанных шорткодов без изменения базы данных, можно применить фильтр the_content и заменить их на пустую строку. Вот пример функции для файла functions.php вашей темы:
function wpclean_remove_unused_shortcodes($content) {
// Список неиспользуемых шорткодов
$unused_shortcodes = ['old_shortcode', 'deprecated_shortcode'];
foreach ($unused_shortcodes as $shortcode) {
// Шаблон для поиска шорткода с атрибутами и без
$pattern = '\\[' . $shortcode . '(\\s[^\\]]*)?\\](.*?)\\[\\/' . $shortcode . '\\]|\\[' . $shortcode . '(\\s[^\\]]*)?\\]';
$content = preg_replace('/' . $pattern . '/s', '', $content);
}
return $content;
}
add_filter('the_content', 'wpclean_remove_unused_shortcodes');Эта функция удалит шорткоды [old_shortcode] и [deprecated_shortcode] из выводимого контента, не меняя записи в базе.
Удаление шорткодов из базы данных напрямую
Если хотите полностью очистить содержимое записей от неиспользуемых шорткодов, можно сделать это с помощью SQL-запросов или PHP-скрипта. Важно сделать резервную копию базы перед такими операциями.
Пример PHP-скрипта для удаления шорткодов из всех записей:
function wpclean_remove_shortcode_from_db($shortcode) {
global $wpdb;
// Получаем все записи с данным шорткодом
$posts = $wpdb->get_results($wpdb->prepare(
"SELECT ID, post_content FROM {$wpdb->posts} WHERE post_content LIKE %s",
'%' . $wpdb->esc_like('[' . $shortcode) . '%'
));
foreach ($posts as $post) {
$pattern = '/\\[' . preg_quote($shortcode, '/') . '(\\s[^\\]]*)?\\](.*?)\\[\\/' . preg_quote($shortcode, '/') . '\\]|\\[' . preg_quote($shortcode, '/') . '(\\s[^\\]]*)?\\]/s';
$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],
['%s'],
['%d']
);
}
}
}
// Используем функцию для удаления шорткода 'old_shortcode'
wpclean_remove_shortcode_from_db('old_shortcode');Этот код перебирает все записи с указанным шорткодом, удаляет его из содержимого и обновляет запись в базе.
Использование плагинов для безопасного отключения шорткодов
Хотя мы рассматриваем способы без плагинов, иногда удобнее использовать специализированные решения. Например:
- Clearfy Pro — плагин для оптимизации, который позволяет отключать неиспользуемые шорткоды и другие элементы;
- «WP Clean Shortcodes» — бесплатный плагин для поиска и удаления старых шорткодов;
- «Shortcode Cleaner» — простой инструмент для очистки контента.
Использование плагинов удобно, если вы хотите гибко управлять шорткодами без ручных правок базы данных.
Рекомендации по работе с шорткодами и оптимизации сайта
Чтобы в дальнейшем не сталкиваться с неиспользуемыми шорткодами:
- Перед удалением плагина отключайте шорткод через
remove_shortcode(); - Используйте функции типа
wpclean_unregister_shortcode()для централизованного управления; - Регулярно проверяйте содержимое на наличие необработанных шорткодов;
- Оптимизируйте контент и базу данных с помощью проверенных инструментов, например, Clearfy Pro.
Таким образом, удаление неиспользуемых шорткодов — важный этап поддержки сайта. Следуя описанным методам, вы сможете безопасно очистить контент и улучшить производительность WordPress.