wpclean.ru wordpress WPClean.ru

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

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

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

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

  • Появление на страницах непонятных коротких записей в виде текста вида [example_shortcode], что портит внешний вид сайта.
  • Увеличение нагрузки на базу данных и обработку контента, так как WordPress обрабатывает эти шорткоды при загрузке страниц.
  • Потенциальные конфликты и ошибки, если шорткод был зарегистрирован плагином, который больше не активен.

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

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

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

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

function wpclean_list_unused_shortcodes() {
    global $shortcode_tags;
    $unused = [];
    foreach( $shortcode_tags as $shortcode => $func ) {
        $count = 0;
        $args = [
            'post_type' => 'any',
            'posts_per_page' => -1,
            's' => '[' . $shortcode,
            'fields' => 'ids',
        ];
        $query = new WP_Query( $args );
        $count = $query->found_posts;
        if ( $count === 0 ) {
            $unused[] = $shortcode;
        }
    }
    return $unused;
}

// Использование функции
$unused_shortcodes = wpclean_list_unused_shortcodes();
if ( ! empty( $unused_shortcodes ) ) {
    echo 'Неиспользуемые шорткоды: ' . implode( ', ', $unused_shortcodes );
} else {
    echo 'Все шорткоды используются.';
}

Эта функция ищет в базе записей, страниц и других типах постов наличие шорткодов по шаблону [shortcode. Если шорткод не найден, он добавляется в список неиспользуемых.

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

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

Удаление через SQL-запрос

Пример запроса для удаления шорткода [example_shortcode] из всех записей:

UPDATE wp_posts
SET post_content = REGEXP_REPLACE(post_content, '\[example_shortcode[^\]]*\]', '')
WHERE post_content LIKE '%[example_shortcode%';

Обратите внимание, что функция REGEXP_REPLACE доступна в MySQL 8.0+. Для более старых версий придется использовать сложные обходные решения.

Удаление через PHP и WP-CLI

Можно написать скрипт, который переберет все записи и удалит шорткод из контента:

function wpclean_remove_shortcode_from_posts( $shortcode ) {
    $args = [
        'post_type' => 'any',
        'posts_per_page' => -1,
        's' => '[' . $shortcode,
        'fields' => 'ids',
    ];
    $query = new WP_Query( $args );
    foreach ( $query->posts as $post_id ) {
        $post = get_post( $post_id );
        $content = $post->post_content;
        // Регулярное выражение для удаления шорткода со всеми параметрами
        $pattern = '/\[' . preg_quote($shortcode, '/') . '(\s[^\]]*)?\]/';
        $new_content = preg_replace($pattern, '', $content);
        if ( $new_content !== $content ) {
            wp_update_post([
                'ID' => $post_id,
                'post_content' => $new_content
            ]);
        }
    }
}

// Пример вызова
wpclean_remove_shortcode_from_posts('example_shortcode');

Такой скрипт можно запустить один раз, например через файл в корне сайта или WP-CLI команду.

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

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

Для этого используется функция remove_shortcode( 'shortcode_name' ). Пример:

function wpclean_unregister_unused_shortcodes() {
    $unused_shortcodes = wpclean_list_unused_shortcodes();
    foreach ( $unused_shortcodes as $shortcode ) {
        remove_shortcode( $shortcode );
    }
}
add_action('init', 'wpclean_unregister_unused_shortcodes');

Это гарантирует, что WordPress не будет пытаться обработать эти шорткоды, а они не будут выводиться в виде текста.

Плагины для управления шорткодами

Хотя в статье мы ориентировались на решения без плагинов, иногда удобно использовать специализированные инструменты. Например, плагин Shortcode Cleaner Lite позволит быстро искать и удалять шорткоды из контента.

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

×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙