wpclean.ru wordpress WPClean.ru

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

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

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

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

Как проверить, какие шорткоды зарегистрированы

global $shortcode_tags;
print_r(array_keys($shortcode_tags));

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

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

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

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

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

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

  1. Определите список неиспользуемых шорткодов с помощью вышеописанных методов.
  2. Удалите регистрацию шорткода из functions.php вашей темы или плагина. Обычно это вызов remove_shortcode('shortcode_name'); или удаление функции add_shortcode('shortcode_name', 'callback_function');.
  3. Очистите контент от оставшихся шорткодов с помощью SQL-запроса или PHP-скрипта, например:
function remove_unused_shortcode_from_posts($shortcode) {
    global $wpdb;
    $pattern = '\\[' . preg_quote($shortcode, '/') . '(\\s[^\]]*)?\\]';
    $posts = $wpdb->get_results("SELECT ID, post_content FROM {$wpdb->posts} WHERE post_content LIKE '%[{$shortcode}%' AND post_status = 'publish'");
    foreach ($posts as $post) {
        $clean_content = preg_replace('/' . $pattern . '/i', '', $post->post_content);
        if ($clean_content !== $post->post_content) {
            $wpdb->update(
                $wpdb->posts,
                ['post_content' => $clean_content],
                ['ID' => $post->ID]
            );
        }
    }
}
remove_unused_shortcode_from_posts('shortcode_name');
  1. Очистите кэш (если используется) для обновления вывода страниц.

Проверка результата после удаления

Обязательно проверьте:

  • Отсутствие ошибок Unknown shortcode в контенте или логах.
  • Отсутствие визуальных артефактов на страницах, где раньше использовался шорткод.
  • Вызов print_r(array_keys($shortcode_tags)); не должен содержать удалённые шорткоды.

Частые ошибки при удалении шорткодов и их исправление

  • Удаление шорткода без очистки контента — ведёт к появлению необработанных шорткодов в тексте. Решение: выполнить поиск и заменить в базе данных.
  • Удаление шорткода из темы, но он регистрируется плагином — шорткод снова появляется. Решение: отключите или настройте плагин.
  • Неправильный синтаксис регулярного выражения для удаления шорткода из постов — не удаляет все варианты использования. Решение: использовать корректный и проверенный паттерн.

Практические советы по безопасности и производительности

  • Удаляйте шорткоды только после полного аудита их использования, чтобы не сломать функционал.
  • Для массовой замены в базе данных сделайте резервную копию перед выполнением SQL-запросов.
  • Используйте транзакции или WP-CLI команды для больших сайтов с большим объёмом контента.
  • По возможности отключайте шорткоды на уровне плагинов, а не темы, чтобы избежать конфликтов при смене темы.

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

МетодПлюсыМинусы
Удаление через functions.php (remove_shortcode)Простота, быстроШорткод остаётся в базе, может вызывать ошибки
Очистка контента через SQL/PHPПолное удаление шорткода из контентаРиск ошибок при неправильных запросах
Использование плагинов для поиска и удаленияУдобство, безопаснееЗависимость от плагина, нагрузка на сайт
×
Оптимизируй свой сайт!

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

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