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

При работе с WordPress регулярно возникает задача массово найти и заменить слово, фразу, символ или фрагмент текста. Иногда достаточно исправить несколько десятков публикаций, а иногда изменение нужно провести по базе данных или файлам сайта. Для таких задач я разработал собственный плагин Tekito - поиск и замена.
В актуальной версии 1.1.5 плагин умеет не только выполнять обычный поиск и замену в WordPress, но и автоматически исправлять новые материалы, работать с Gutenberg, искать текст в файлах и ограничивать замену только контентом, который действительно видит посетитель сайта.
Проблема
Стандартных инструментов WordPress недостаточно, если нужно заменить один и тот же текст сразу во многих записях, страницах или других материалах. Ручное редактирование занимает много времени и легко приводит к пропущенным вхождениям.
Прямая замена через SQL тоже подходит не всегда. Можно случайно изменить URL, настройки, метаполя, сериализованные данные или другую служебную информацию. Особенно опасно выполнять глобальный поиск и замену, когда требуется исправить только обычный текст на страницах сайта.
Отдельная задача - повторяющиеся ошибки при публикации новых материалов. Например, если определённую последовательность символов или написание приходится исправлять после каждого добавления статьи, удобнее выполнять такую замену автоматически.
Решение
Я разработал отдельный плагин для WordPress, который объединяет разовый поиск и замену с постоянными правилами автозамены. Основной принцип - сначала показать пользователю, что именно будет найдено, а уже после проверки выполнять изменение.
Плагин работает из раздела Инструменты → Tekito - поиск и замена и не требует редактирования базы данных вручную.
Безопасная замена только видимого текста
В версии 1.1 появился отдельный режим «Только тексты, отображаемые на сайте». Он предназначен для ситуаций, когда нужно исправить именно содержимое страниц, не затрагивая техническую часть WordPress.
В этом режиме поиск и замена выполняются в заголовках, основном содержимом и отрывках опубликованных материалов, названиях и описаниях рубрик и меток, а также опубликованных комментариях.
URL, метаполя, настройки WordPress и служебные данные при этом не изменяются. Такой режим удобен, например, для исправления опечаток, изменения терминологии или массовой замены символов в текстах.
Поиск по всей базе данных WordPress
Если требуется более глубокая работа, можно переключиться на полный режим и выполнить поиск по базе данных WordPress.
Плагин показывает количество найденных совпадений, таблицу и поле, где обнаружен текст, а также фрагмент содержимого. Перед заменой можно выполнить обычный поиск и проверить результат.
Полный режим умеет корректно обрабатывать сериализованные данные WordPress. Это важно, поскольку простая SQL-команда REPLACE может повредить такие значения из-за изменения длины строки.
Поиск и замена в файлах сайта
Помимо базы данных, плагин может искать текст в файлах сайта. Можно ограничить поиск каталогом wp-content или проверить весь каталог WordPress.
Этот режим подходит, когда нужная строка находится в шаблоне темы, плагине, CSS, JavaScript или другом текстовом файле.
Перед изменением файлов можно включить автоматическое создание резервных копий. Для изменяемого файла создаётся отдельная копия с датой и временем, поэтому исходную версию можно восстановить.
Автоматическая замена при создании материалов
В плагине можно создавать постоянные правила автозамены. Для каждого правила задаются искомая строка и значение, на которое её необходимо заменить.
Правило может срабатывать только при создании нового материала или дополнительно применяться при последующих обновлениях.
Автозамена работает для заголовка, основного содержимого и отрывка записи.
Поддержка Gutenberg
Отдельно пришлось учитывать особенности редактора Gutenberg. При создании публикации WordPress сначала сохраняет её как auto-draft, поэтому первое настоящее сохранение технически может восприниматься системой уже как обновление существующей записи.
Из-за этого первоначальная версия механизма автозамены могла не применять правило при первом сохранении нового материала. В новой версии логика переработана: плагин определяет первоначальный auto-draft и корректно применяет правила к новой публикации.
Работа с русским текстом
Также была исправлена замена без учёта регистра для кириллицы. Это позволяет корректно находить русские слова независимо от регистра символов, если соответствующая опция отключена.
Обновлённый интерфейс
Интерфейс плагина был полностью переработан. Поля поиска и замены расположены рядом, основные режимы вынесены в отдельные компактные блоки, а дополнительные параметры показываются только тогда, когда они действительно нужны.
После выполнения поиска выводится краткая статистика: общее количество совпадений, число мест, количество результатов в базе данных и файлах.
Для успешной замены используется зелёная индикация, предупреждения выделяются отдельно, а найденные результаты отображаются в компактной таблице.
Интерфейс адаптирован и для мобильных устройств. Большие таблицы на небольшом экране прокручиваются внутри своего блока и не ломают ширину страницы.
Что умеет актуальная версия
- искать текст без внесения изменений;
- находить и заменять слова, фразы и символы;
- работать только с контентом, который видит посетитель;
- выполнять полный поиск по базе данных WordPress;
- корректно обрабатывать сериализованные данные;
- искать и заменять текст в файлах сайта;
- создавать резервные копии изменяемых файлов;
- учитывать или игнорировать регистр;
- корректно работать с русским текстом;
- создавать постоянные правила автозамены;
- применять правила к новым материалам и при необходимости к обновлениям;
- корректно обрабатывать первое сохранение публикации в Gutenberg;
- показывать количество и расположение найденных совпадений.
Безопасность массовой замены
Даже при наличии безопасного режима массовая замена остаётся операцией, которая может затронуть большое количество данных. Поэтому перед серьёзными изменениями рекомендуется сделать резервную копию сайта.
Рабочая последовательность простая: сначала запустить режим «Только поиск», проверить найденные места и только затем выполнить замену.
Результат
Получился самостоятельный инструмент для регулярной работы с контентом WordPress. Он закрывает как простые задачи - например, заменить одну фразу во всех опубликованных статьях, - так и более технические сценарии с базой данных и файлами.
После обновлений плагин стал безопаснее для повседневной работы, корректно работает с новыми публикациями Gutenberg, русским текстом и позволяет отделить обычное редактирование содержимого сайта от потенциально опасных изменений служебных данных.
Есть похожая задача?
Пришлите ссылку на сайт и опишите желаемый результат.