Удаление пустых шорткодов в WordPress: практическое руководство

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

Что такое пустые шорткоды и почему они появляются в WordPress

Шорткоды — это специальные теги в квадратных скобках, которые WordPress заменяет на динамический контент. Например, [gallery] или [contact-form-7 id="123"]. Когда шорткод не обрабатывается плагином или имеет пустое содержимое, в тексте могут появляться пустые или некорректные теги, которые портят внешний вид и структуру страницы.

Основные причины появления пустых шорткодов:

  • Удалён плагин, который отвечал за обработку шорткода, а в контенте остались его теги.
  • Шорткод вызывается без необходимых параметров или с пустыми значениями.
  • Ошибка в коде плагина, из-за которой не генерируется контент.

Удаление или корректировка таких шорткодов улучшит качество контента и снизит нагрузку на сайт.

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

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

Пример функции wponline_remove_empty_shortcodes, которая удаляет пустые шорткоды:

function wponline_remove_empty_shortcodes($content) {
    // Найдем все шорткоды в контенте
    preg_match_all('/\[(\w+)([^\]]*)\](?:([^\[]*?)\[\/\1\])?/', $content, $matches, PREG_SET_ORDER);
    
    foreach ($matches as $shortcode) {
        $full_shortcode = $shortcode[0];
        $tag = $shortcode[1];
        $inner_content = isset($shortcode[3]) ? trim($shortcode[3]) : '';
        
        // Если шорткод пустой (нет внутреннего контента и нет атрибутов)
        if ($inner_content === '' && trim($shortcode[2]) === '') {
            $content = str_replace($full_shortcode, '', $content);
        }
    }
    return $content;
}
add_filter('the_content', 'wponline_remove_empty_shortcodes');

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

Как подключить этот код в WordPress

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

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

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

  • Shortcode Cleaner Lite — простой плагин для удаления неработающих или пустых шорткодов из постов и страниц.
  • Remove Orphan Shortcodes — позволяет сканировать контент и удалять шорткоды, которые не обрабатываются установленными плагинами.

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

Рекомендации по предотвращению появления пустых шорткодов

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

  • Перед удалением плагина, который добавляет шорткоды, удаляйте или заменяйте эти шорткоды в контенте.
  • Используйте проверенные и регулярно обновляемые плагины для шорткодов.
  • При создании собственных шорткодов в коде всегда предусматривайте обработку пустых параметров и возвращайте пустую строку, если нет данных для вывода.
  • Рассмотрите использование плагинов типа Clearfy Pro, которые помогают оптимизировать и чистить сайт от мусора, включая неиспользуемые шорткоды.

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

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

function wponline_shortcode_example($atts) {
    $atts = shortcode_atts(array(
        'text' => '',
    ), $atts, 'wponline_example');

    if (empty(trim($atts['text']))) {
        // Возвращаем пустую строку, чтобы не выводить пустой шорткод
        return '';
    }

    return '<div class="wponline-example">' . esc_html($atts['text']) . '</div>';
}
add_shortcode('wponline_example', 'wponline_shortcode_example');

Такой подход гарантирует, что пустой шорткод не будет выводиться на страницу, что упрощает дальнейшую очистку и предотвращает появление пустых тегов.

Как добавить автоматическое удаление старых отзывов в WordPress
07.02.2026
Как создать настройку в личном кабинете WordPress для пользователей
10.12.2025
Как добавить автоматическое удаление неактивных пользователей в WordPress
14.02.2026
WooCommerce: автоматическое отключение способов оплаты при проблемах с интернет-соединением
20.06.2026
Как удалить старые вариации товаров в WooCommerce с помощью кода
05.05.2026