wpdebug.ru wordpress WP Debug

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

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

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

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

Удаление таких шорткодов помогает сделать сайт чище, предотвращает ошибки и облегчает дальнейшее сопровождение.

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

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

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

Для поиска используем SQL-запросы через phpMyAdmin или любой другой инструмент работы с базой:

SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%[example_shortcode%';

Здесь example_shortcode замените на имя шорткода. Если запрос не возвращает результатов, значит шорткод не используется в постах.

Чтобы получить список всех шорткодов, зарегистрированных на сайте, можно воспользоваться функцией WordPress shortcode_exists() и получить список из глобального массива $shortcode_tags.

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

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

function wpdebug_get_unused_shortcodes() {
    global $wpdb, $shortcode_tags;
    $unused = array();

    foreach (array_keys($shortcode_tags) as $shortcode) {
        $like = '%' . $wpdb->esc_like('[' . $shortcode) . '%';
        $count = $wpdb->get_var($wpdb->prepare(
            "SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_content LIKE %s",
            $like
        ));

        if (intval($count) === 0) {
            $unused[] = $shortcode;
        }
    }

    return $unused;
}

// Использование
$unused_shortcodes = wpdebug_get_unused_shortcodes();
echo 'Неиспользуемые шорткоды: ' . implode(', ', $unused_shortcodes);

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

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

Удаление шорткодов из кода включает удаление регистрации шорткода и очистку контента от их вызовов при необходимости.

Регистрация шорткода обычно делается функцией add_shortcode('имя_шорткода', 'функция_обработчик'). Для удаления шорткода достаточно вызвать remove_shortcode('имя_шорткода').

Пример удаления шорткода в файле functions.php вашей темы или в вашем плагине:

function wpdebug_remove_unused_shortcodes() {
    $unused = wpdebug_get_unused_shortcodes();

    foreach ($unused as $shortcode) {
        remove_shortcode($shortcode);
    }
}
add_action('init', 'wpdebug_remove_unused_shortcodes');

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

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

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

function wpdebug_remove_shortcode_from_content($content, $shortcode) {
    $pattern = get_shortcode_regex(array($shortcode));
    return preg_replace('/'. $pattern .'/s', '', $content);
}

function wpdebug_clean_unused_shortcodes_in_posts() {
    global $wpdb;
    $unused = wpdebug_get_unused_shortcodes();

    foreach ($unused as $shortcode) {
        $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) {
            $clean_content = wpdebug_remove_shortcode_from_content($post->post_content, $shortcode);
            if ($clean_content !== $post->post_content) {
                $wpdb->update(
                    $wpdb->posts,
                    array('post_content' => $clean_content),
                    array('ID' => $post->ID)
                );
            }
        }
    }
}

// Запускать один раз, например, через WP-CLI или временно подключить к хуку
// wpdebug_clean_unused_shortcodes_in_posts();

Этот код последовательно ищет записи с вызовами неиспользуемых шорткодов и удаляет их, сохраняя обновлённый контент.

Проверка и резервное копирование перед удалением

Перед выполнением операций по удалению шорткодов и очистке контента крайне важно сделать резервную копию базы данных. Это позволит восстановить сайт в случае ошибки.

Также рекомендуется сначала протестировать функции на тестовом сайте или в локальной среде, чтобы убедиться, что удаление происходит корректно и не влияет на нужный контент.

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

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

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

  • Shortcode Cleaner Lite — автоматическая очистка нераспознанных шорткодов из контента.
  • Shortcode Manager — регистрация и удаление шорткодов с удобным интерфейсом.

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

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

Подводя итог, можно выделить следующие основные шаги:

  1. Определить список зарегистрированных шорткодов.
  2. Проверить их использование в содержимом сайта.
  3. Удалить регистрацию неиспользуемых шорткодов из кода.
  4. Очистить содержимое постов от вызовов этих шорткодов.
  5. Обязательно сделать резервное копирование перед изменениями.
  6. Провести тестирование на тестовом сайте.

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

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше