Как автоматизировать удаление неработающих шорткодов в WordPress

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

Почему важно удалять неработающие шорткоды

Неработающие шорткоды не только ухудшают визуальное восприятие страниц, но и могут повлиять на SEO, если поисковые системы фиксируют лишний мусор в тексте. Кроме того, они создают путаницу для редакторов и пользователей, которые видят непонятные конструкции. Ручное исправление – трудоёмкий и долгий процесс, особенно на больших сайтах. Автоматизация решает эту проблему эффективно и надёжно.

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

Как определить неработающие шорткоды в WordPress

WordPress хранит зарегистрированные шорткоды в глобальном массиве $shortcode_tags. Если шорткод встречается в контенте, но отсутствует в этом массиве, значит, он неактивен и, скорее всего, не работает.

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

Пример функции для поиска всех шорткодов в тексте

function wpacademy_find_shortcodes($content) {
    preg_match_all('/\[([^\[\]\s]+)(\s[^\[\]]*)?\]/', $content, $matches);
    return $matches[1];
}

Эта функция вернёт массив всех шорткодов, встречающихся в тексте, включая неработающие.

Автоматическое удаление неработающих шорткодов из контента

Для удаления неработающих шорткодов нам нужно пройтись по всем записям (post_content), найти шорткоды, которые не зарегистрированы, и удалить их из текста. Ниже представлен пример функции, которую можно запускать вручную или через WP-CLI для массовой очистки.

function wpacademy_remove_broken_shortcodes() {
    global $wpdb;
    $registered_shortcodes = array_keys($GLOBALS['shortcode_tags']);

    $posts = $wpdb->get_results("SELECT ID, post_content FROM {$wpdb->posts} WHERE post_content LIKE '%[%' AND post_status = 'publish'");

    foreach ($posts as $post) {
        $shortcodes_in_post = wpacademy_find_shortcodes($post->post_content);
        $broken_shortcodes = array_diff($shortcodes_in_post, $registered_shortcodes);

        if (!empty($broken_shortcodes)) {
            $new_content = $post->post_content;
            foreach ($broken_shortcodes as $sc) {
                // Удаляем все вхождения этого шорткода, включая параметры
                $pattern = '/\[' . preg_quote($sc, '/') . '(\s[^\]]*)?\](?:([^\[]*?)\[\/'. preg_quote($sc, '/') . '\])?/s';
                $new_content = preg_replace($pattern, '', $new_content);
            }
            if ($new_content !== $post->post_content) {
                $wpdb->update(
                    $wpdb->posts,
                    ['post_content' => $new_content],
                    ['ID' => $post->ID],
                    ['%s'],
                    ['%d']
                );
            }
        }
    }
}

Эта функция:

  • Получает все опубликованные записи с контентом, содержащим шорткоды;
  • Находит неработающие шорткоды;
  • Удаляет их из контента, включая закрывающие теги, если они есть;
  • Обновляет посты в базе.

Важно: перед запуском таких операций обязательно сделайте полный бэкап базы, чтобы избежать потери данных.

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

Если вы предпочитаете готовые решения, есть плагины, которые помогают находить и чистить неработающие шорткоды:

  • Shortcode Cleaner Lite – автоматизирует удаление неработающих шорткодов из контента и комментариев.
  • Clearfy Pro – многофункциональный плагин для оптимизации WordPress, в том числе умеет управлять шорткодами и скрывать неиспользуемые.

Для установки и настройки таких плагинов можно посетить Clearfy Pro на WPSHOP.

Дополнительные советы по работе с шорткодами

Создание безопасных шорткодов с проверкой

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

function wpacademy_register_my_shortcode() {
    add_shortcode('myshortcode', 'wpacademy_handle_my_shortcode');
}
add_action('init', 'wpacademy_register_my_shortcode');

function wpacademy_handle_my_shortcode($atts, $content = null) {
    if (!function_exists('some_required_function')) {
        return '';// Возвращаем пустую строку, если что-то отсутствует
    }
    // Логика шорткода
    return '<div>Пример шорткода</div>';
}

Регулярный аудит контента

Периодически проверяйте сайт на наличие неработающих шорткодов, особенно после удаления плагинов. Для этого можно использовать WP-CLI команду wp post list --field=ID и выполнять скрипт очистки в автоматическом режиме.

Резервное копирование перед изменениями

Любые операции с базой данных требуют резервного копирования. Для автоматизации бэкапов можно использовать плагин BackupMaster.

Выводы

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

Как автоматизировать удаление неиспользуемых шорткодов в WordPress
31.03.2026
Как сделать автоматическое удаление заказов WooCommerce после 30 дней
10.05.2026
Как настроить AJAX в WordPress для динамического обновления контента
18.11.2025
Как создать и настроить пользовательские роли и права в WordPress
26.01.2026
Как отключить и заблокировать регистрацию пользователей в WordPress без плагинов
25.04.2026