wpquiz.ru wordpress WPQuiz.ru

Как удалить неиспользуемые шорткоды в WordPress

Шорткоды в WordPress — очень удобный инструмент для быстрого добавления функционала на страницы и записи. Однако с течением времени на сайте накапливаются неиспользуемые шорткоды, которые могут мешать работе и создавать ошибки в отображении контента. В этой статье подробно рассмотрим, как найти и удалить неиспользуемые шорткоды, а также исправить ошибки, связанные с отсутствующими шорткодами.

Почему важно удалять неиспользуемые шорткоды

Неиспользуемые шорткоды — это шорткоды, которые больше не зарегистрированы в вашей теме или плагинах, но остались в содержимом записей или страниц. Они могут выглядеть в виде кода типа [old_shortcode], который не обрабатывается и выводится на сайт как есть, портя внешний вид и создавая путаницу для пользователей.

Кроме того, большое количество неиспользуемых шорткодов может замедлять парсинг контента и создавать дополнительные нагрузки на сервер, особенно если вы используете плагины для визуального построения страниц.

Регулярное удаление и очистка шорткодов помогает поддерживать сайт в порядке и улучшает пользовательский опыт.

Как найти неиспользуемые шорткоды в базе данных WordPress

Поиск шорткодов через SQL-запрос

Самый точный способ найти шорткоды — это выполнить поиск по базе данных. В WordPress контент записей и страниц хранится в таблице wp_posts в поле post_content. Для поиска всех шорткодов можно использовать SQL-запрос с регулярным выражением:

SELECT ID, post_title, post_content FROM wp_posts WHERE post_content REGEXP '\[[a-zA-Z0-9_\-]+\]';

Этот запрос вернёт все записи и страницы, где встречаются шорткоды в формате [shortcode] или [shortcode attr="value"]. После получения списка можно отфильтровать те, которые относятся к несуществующим шорткодам.

Скрипт для поиска конкретных неиспользуемых шорткодов

Если вы знаете названия шорткодов, которые были удалены, например old_shortcode1, old_shortcode2, можно искать их конкретно:

SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%[old_shortcode1%' OR post_content LIKE '%[old_shortcode2%';

Такой запрос быстро покажет страницы, где остались эти шорткоды, и вы сможете их отредактировать.

Автоматическое удаление неиспользуемых шорткодов с помощью PHP-кода

Если на сайте много записей с неиспользуемыми шорткодами, редактировать вручную неудобно. Можно написать PHP-скрипт для массового удаления или замены шорткодов.

Пример функции для удаления всех шорткодов, которые не зарегистрированы в WordPress:

function wpquiz_remove_unused_shortcodes() {
    global $wpdb;
    // Получаем список всех зарегистрированных шорткодов
    $registered_shortcodes = array_keys($GLOBALS['shortcode_tags']);

    // Получаем все записи и страницы
    $posts = $wpdb->get_results("SELECT ID, post_content FROM {$wpdb->posts} WHERE post_type IN ('post', 'page') AND post_status = 'publish'");

    foreach ($posts as $post) {
        $content = $post->post_content;

        // Находим все шорткоды в контенте
        preg_match_all('/\[([a-zA-Z0-9_\-]+)(\s[^\]]*)?\]/', $content, $matches);

        foreach ($matches[1] as $shortcode) {
            if (!in_array($shortcode, $registered_shortcodes)) {
                // Удаляем неиспользуемый шорткод из контента
                $pattern = '/\[' . preg_quote($shortcode, '/') . '(\s[^\]]*)?\]/';
                $content = preg_replace($pattern, '', $content);
            }
        }

        // Обновляем запись, если контент изменился
        if ($content !== $post->post_content) {
            wp_update_post(array(
                'ID' => $post->ID,
                'post_content' => $content,
            ));
        }
    }
}

// Запуск функции при активации плагина или вручную
// wpquiz_remove_unused_shortcodes();

Этот код перебирает все опубликованные записи и страницы, находит в них шорткоды, которые не зарегистрированы в текущем WordPress, и удаляет их из контента. Важно запускать такую функцию аккуратно и предварительно делать резервные копии базы.

Использование плагинов для поиска и очистки шорткодов

Для упрощения задачи можно воспользоваться готовыми плагинами, которые помогают управлять шорткодами:

  • Shortcode Cleaner Lite — автоматически ищет и удаляет неработающие шорткоды, заменяя их на пустоту или кастомный текст.
  • Remove Orphan Shortcodes — плагин для поиска и удаления «осиротевших» шорткодов, которые больше не поддерживаются.
  • Clearfy Pro (ссылка: https://wpshop.ru/clearfy-pro/) — комплексный инструмент оптимизации сайта, который умеет работать с шорткодами и оптимизировать контент.

Использование плагинов удобно, когда вы не хотите погружаться в код, а хотите быстро очистить сайт от ошибок, связанных с шорткодами.

Как предотвратить появление неиспользуемых шорткодов в будущем

Чтобы минимизировать появление неиспользуемых шорткодов, придерживайтесь следующих рекомендаций:

  • Перед деактивацией или удалением плагина, который добавляет шорткоды, очистите контент от этих шорткодов.
  • Используйте кастомные поля или блоки Gutenberg вместо шорткодов, если это возможно — это более надёжно и удобно.
  • Включите обработку ошибок в выводе шорткодов — например, вместо вывода кода оставлять пустой блок или выводить предупреждение в админке.
  • Регулярно проверяйте базу данных на наличие неиспользуемых шорткодов с помощью SQL-запросов или плагинов.

Создание функции для автоматического удаления определённого шорткода по имени

Иногда нужно удалить конкретный шорткод из контента, например, если плагин давно удалён, а шорткод остался.

function wpquiz_remove_specific_shortcode($shortcode_name) {
    global $wpdb;
    $posts = $wpdb->get_results("SELECT ID, post_content FROM {$wpdb->posts} WHERE post_type IN ('post', 'page') AND post_status = 'publish'");

    foreach ($posts as $post) {
        $content = $post->post_content;
        $pattern = '/\[' . preg_quote($shortcode_name, '/') . '(\s[^\]]*)?\]/';
        if (preg_match($pattern, $content)) {
            $content = preg_replace($pattern, '', $content);
            wp_update_post(array(
                'ID' => $post->ID,
                'post_content' => $content,
            ));
        }
    }
}

// Запуск удаления шорткода 'old_shortcode'
// wpquiz_remove_specific_shortcode('old_shortcode');

Такой подход удобен, если вы знаете, какой именно шорткод нужно убрать, и хотите сделать это быстро.

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее