Как удалить необработанные шорткоды из форм Contact Form 7 в WordPress (очистка формы от «мусора»)

От автора

Приветствую вас, друзья! Сегодня я хочу поделиться решением одной из самых частых проблем, с которой сталкиваются пользователи Contact Form 7 (CF7) — появление необработанных шорткодов в форме. Например, если вы когда-либо удаляли плагин, который использовал шорткоды в форме, то знаете, что вместо поля ввода может отображаться что-то вроде [your-shortcode] или [/your-shortcode]. Это портит внешний вид и мешает работе формы. Решение? Простой код для functions.php, который очищает форму от таких «мусорных» шорткодов.


Зачем нужен этот код?

Contact Form 7 позволяет добавлять кастомные шорткоды через фильтр wpcf7_form_elements. Однако если вы удаляете плагин или функционал, который отвечал за эти шорткоды, CF7 не очищает их автоматически. В результате в форме остаются неработающие теги вида [invalid-tag] или [/invalid-tag].

Например, если раньше вы использовали шорткод [date-field], а теперь он больше не зарегистрирован, посетители увидят просто текст [date-field] вместо поля ввода даты. Это не только некрасиво, но и мешает сбору данных.


Как работает код?

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

add_filter('wpcf7_form_elements', 'remove_unregistered_shortcodes_from_cf7');

function remove_unregistered_shortcodes_from_cf7($form) {

// Удаляем все необработанные шорткоды из формы CF7

$form = preg_replace('/$$\/?([a-z0-9_-]+)[^\]]*$$/', '', $form);

return $form;

}

Пояснение регулярного выражения:

  • $$ и $$ — ищем квадратные скобки.
  • \/? — допускаем наличие слэша в закрывающем теге (например, [/example]).
  • ([a-z0-9_-]+) — имя шорткода должно содержать буквы, цифры, подчеркивания или дефисы.
  • [^\]]* — пропускаем любые символы между именем шорткода и закрывающей скобкой.

Этот код удаляет все шорткоды , которые не были зарегистрированы в WordPress (например, через add_shortcode()). Таким образом, вы избавляетесь от «мусорных» тегов, сохранив работоспособность формы.


Как добавить код в functions.php?

  1. Откройте файл functions.php вашей темы.
  2. Вставьте код в конец файла.
  3. Сохраните изменения.

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


Когда использовать этот код?

  • После удаления плагинов: Если вы удалили плагин, который добавлял кастомные шорткоды в форму CF7.
  • При переносе сайта: Иногда шорткоды остаются в БД при миграции сайта.
  • Для профилактики: Добавьте код в шаблон, чтобы предотвратить появление «мусора» в будущем.

Плюсы и минусы метода

Плюсы:

  • Простота реализации.
  • Не требует установки дополнительных плагинов.
  • Работает мгновенно после активации.

Минусы:

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

Если вам нужно полностью очистить БД от неиспользуемых шорткодов, рекомендую использовать плагины вроде Clean Unused Shortcodes.


Альтернативные решения

  1. Ручная очистка: Откройте форму в админке CF7 и удалите ненужные шорткоды вручную.
  2. Фильтрация через str_replace: Если вы точно знаете, какие шорткоды нужно удалить, замените их на пустую строку: $form = str_replace(‘[old-shortcode]’, », $form);
  3. Плагины: Используйте инструменты вроде Better Font Awesome или Shortcodes Ultimate, которые корректно обрабатывают шорткоды.

Советы от разработчика

  • Тестируйте код на тестовом сайте , прежде чем применять его на рабочем проекте.
  • Используйте кэширование: После очистки формы CF7, очистите кэш сайта, чтобы изменения отобразились сразу.
  • Обновляйте плагины регулярно: Это поможет избежать появления «мусорных» шорткодов из-за конфликтов версий.

Заключение

Этот код — спасение для тех, кто сталкивается с проблемой необработанных шорткодов в Contact Form 7. Он прост в реализации, но требует осторожности: убедитесь, что удаляемые шорткоды действительно не нужны. Если вы хотите более гибкое решение, рассмотрите использование специализированных плагинов.

Если у вас есть вопросы или предложения, пишите в комментариях! А если статья была полезна — поделитесь ею в соцсетях. Удачи в ваших WordPress-проектах!

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Пролистать наверх