Шорткоды — мощный инструмент WordPress, позволяющий вставлять сложный функционал в записи и страницы с помощью простых тегов. Однако при развитии сайта и смене плагинов часто остаются неиспользуемые шорткоды, которые могут приводить к ошибкам отображения, снижать производительность и ухудшать SEO. В этой статье я расскажу, как найти и полностью удалить неиспользуемые шорткоды из контента WordPress, используя как готовые решения, так и собственный код.
Почему важно удалять неиспользуемые шорткоды
Незадействованные шорткоды обычно отображаются в виде текста с квадратными скобками или вызывают ошибки на странице. Это портит внешний вид сайта и создает негативное впечатление у пользователей. Кроме того, такие шорткоды могут:
- Загромождать базу данных, увеличивая размер контента.
- Вызывать конфликты с другими плагинами или темами.
- Негативно влиять на SEO из-за наличия мусорного кода.
Удаление неиспользуемых шорткодов — важная часть технической поддержки и оптимизации сайта.
Как найти неиспользуемые шорткоды в базе данных
Для начала нужно понять, какие именно шорткоды остались неиспользуемыми. Рассмотрим два подхода: автоматический через плагин и ручной через SQL-запросы.
Использование плагина Shortcode Cleaner Lite
Плагин Shortcode Cleaner Lite позволяет легко найти и удалить неиспользуемые шорткоды. Он анализирует весь контент и показывает, какие шорткоды не зарегистрированы в текущей установке WP.
После установки и активации перейдите в Инструменты > Shortcode Cleaner и запустите сканирование. Плагин выдаст список неиспользуемых шорткодов и позволит удалить их.
Поиск через SQL-запросы
Если хотите работать без плагинов, можно выполнить запрос к базе данных для поиска вхождений шорткодов:
SELECT ID, post_title, post_content FROM wp_posts WHERE post_content LIKE '%[example_shortcode]%';Замените example_shortcode на имя интересующего вас шорткода. Этот запрос покажет записи, где он используется. Аналогично можно создать запросы для всех подозрительных шорткодов.
Автоматическое удаление неиспользуемых шорткодов с помощью кода
Если на сайте много контента, вручную очищать неудобно. Лучше автоматизировать процесс с помощью пользовательской функции. Рассмотрим пример функции wpma_remove_unused_shortcodes, которая удаляет неиспользуемые шорткоды из всех записей.
function wpma_remove_unused_shortcodes() {
global $wpdb;
// Список зарегистрированных шорткодов
$registered_shortcodes = array_keys($GLOBALS['shortcode_tags']);
// Получаем все шорткоды из базы (предположим, что у нас список известных)
$all_shortcodes = array('oldshortcode1', 'oldshortcode2', 'example_shortcode');
// Вычисляем неиспользуемые
$unused_shortcodes = array_diff($all_shortcodes, $registered_shortcodes);
if (empty($unused_shortcodes)) {
return 'Неиспользуемых шорткодов не найдено';
}
foreach ($unused_shortcodes as $shortcode) {
// Экранируем для поиска
$pattern = '\\[' . preg_quote($shortcode, '/') . '(\s[^\\]]*)?\\]';
// Обновляем контент, удаляя шорткод из записей
$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) {
$new_content = preg_replace('/' . $pattern . '/i', '', $post->post_content);
if ($new_content !== $post->post_content) {
wp_update_post(array(
'ID' => $post->ID,
'post_content' => $new_content
));
}
}
}
return 'Удаление неиспользуемых шорткодов завершено';
}Для запуска можно добавить вызов этой функции в админке или через WP-CLI. Такой подход гарантирует полное удаление шорткодов из базы, а не только их скрытие.
Как избежать появления неиспользуемых шорткодов в будущем
Чтобы не сталкиваться с проблемой «мусорных» шорткодов, рекомендую придерживаться следующих практик:
- Перед удалением плагина, который добавляет шорткоды, сначала удаляйте все записи с его шорткодами.
- Используйте плагин Clearfy Pro (подробнее на WPSHOP), который помогает очищать базу и управлять шорткодами.
- Проверяйте контент при миграции сайта с помощью поиска по шорткодам.
Пример обработки шорткодов с параметрами и вложенными тегами
В реальных условиях шорткоды бывают сложными — с параметрами и вложенным содержимым, например:
[example_shortcode id="123" class="test"]Текст внутри[/example_shortcode]Чтобы корректно удалять такие конструкции, в регулярном выражении нужно учитывать закрывающий тег:
$pattern = '\\[' . preg_quote($shortcode, '/') . '(\s[^\\]]*)?\\](.*?)\\[\\/' . preg_quote($shortcode, '/') . '\\]';Используйте preg_replace с модификатором s для удаления всего блока.
Выводы и рекомендации
Автоматизация удаления неиспользуемых шорткодов — задача, требующая аккуратности и тестирования. Я рекомендую сначала создать резервную копию базы, использовать плагин Shortcode Cleaner Lite для первичного анализа, а затем — кастомный код для массовой очистки. Если хотите повысить эффективность и удобство, обратите внимание на продукты WPSHOP, которые помогают управлять функционалом и оптимизировать сайт.
Таким образом, регулярная чистка шорткодов обеспечит стабильную работу сайта, улучшит его производительность и внешний вид.