Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

WordPress. Замена текста в базе данных

    Поиск и замена текста в базе данных MySQL через phpMyAdmin. Замена строк и ссылок на сайте WordPress с помощью плагина Search Regex.

    Как заменить текст в базе данных WordPress?

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

    Существует два основных способа решения этой задачи для сайта WordPress: «хардкорный» метод через phpMyAdmin и более безопасный метод с помощью плагинов. Давайте сравним оба варианта, их преимущества и недостатки, чтобы вы могли определить для себя подходящий инструмент.

    Важное предупреждение перед заменой

    Любое вмешательство в базу данных несет риски. Ошибка в одном символе может привести к неработоспособности всего сайта. Поэтому перед внесением изменений в базу данных примите следующие меры:

    1. Сделайте полную резервную копию сайта и базы данных.
    2. Если есть возможность, протестируйте замену на копии сайта (staging), а не на боевом ресурсе.
    3. Убедитесь, что вы знаете префикс таблиц вашей базы данных (по умолчанию wp_, но часто он меняется на случайный набор символов).

    Замена текста через phpMyAdmin (SQL-запрос)

    Этот метод не требует установки дополнительных инструментов и работает на уровне сервера. Он подходит для простых, точных замен.

    Как это сделать:

    1. Зайдите в панель управления хостингом и откройте phpMyAdmin.
    2. Выберите базу данных вашего сайта в левой колонке.
    3. Перейдите во вкладку SQL в верхнем меню.
    4. Вставьте SQL-запрос по шаблону ниже (замените wp_ на ваш префикс, если он отличается):
    5. После вставки SQL-запроса появится кнопка «Имитировать запрос». Нажмите её, чтобы узнать сколько и каких строк будет затронуто, перед тем как выполнить замену.
    6. Если всё нормально, нажмите кнопку «Вперёд».

    Кнопка «Имитировать запрос» на вкладке SQL

    Примеры SQL-запросов для замены текста

    Шаблон SQL-запроса:

    Запрос для поиска и замены строк в содержании постов (страниц и записей):

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

    Если найденные строки необходимо не заменить, а удалить, вместо 'Искомый текст' оставьте пустые одинарные кавычки ''.

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

    Условие WHERE ускоряет работу и позволяет затронуть только те строки, где текст действительно есть.

    Оператор LIKE используется в WHERE для поиска по шаблону в строковых столбцах с помощью знаков подстановки. Символ % (процент) заменяет любое количество символов (включая ноль символов), а _ (знак подчеркивания) — ровно один символ.

    Если вы выполните SQL-запрос из примера выше, замена произойдет во всех типах записей: и в записях, и на страницах, и в черновиках, и даже в описаниях вложений (если там есть текст).

    Если вы хотите заменить текст только на страницах или только в записях, нужно добавить условие WHERE post_type = ....

    Замена текста только на страницах:

    Здесь post_status = 'publish' (только опубликованные страницы) добавлен для безопасности, чтобы не менять текст в черновиках, если это не нужно.

    Замена текста только в записях:

    Возможные значения post_type в таблице wp_posts базы данных WordPress:

    • post — обычные записи блога;
    • page — статические страницы;
    • attachment — медиафайлы (вложения);
    • revision — версии записей (сохранённые черновики);
    • nav_menu_item — пункты меню;
    • product — товары (если установлен WooCommerce) и т.д.

    Сам текст содержимого в любом случае лежит в столбце post_content.

    Недостатки этого способа

    Несмотря на скорость, у прямого SQL-запроса есть серьезные минусы:

    1. Отсутствие поддержки знаков подстановки (Wildcards)
      Команда REPLACE работает только с точным совпадением. Вы не можете написать запрос вида «заменить все ссылки, начинающиеся на http://old.com». Для этого нужны регулярные выражения, которые стандартный SQL для запроса REPLACE не поддерживает.
    2. Риск повреждения сериализованных данных
      WordPress хранит некоторые настройки (особенно в таблицах wp_options и wp_postmeta) в сериализованном виде. В таких строках длина текста записывается явно (например, s:5:"hello"). Если вы через SQL замените слово на более длинное или короткое, длина изменится, а цифра в коде останется прежней. Это приведет к ошибке десериализации и поломке настроек плагинов или виджетов.
    3. Нет предпросмотра
      Вы не увидите, что именно изменится, пока не нажмете кнопку выполнения. Отменить действие замены через интерфейс phpMyAdmin невозможно (только через восстановление из бэкапа).
    4. Технические сложности
      Необходимо знать структуру таблиц и синтаксис SQL. Ошибка в названии столбца может привести к потере данных.

    Замена текста с помощью плагина Search Regex

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

    Как воспользоваться плагином Search Regex?

    1. В админ-панели WordPress перейдите в Плагины → Добавить новый.
    2. Найдите Search Regex, установите и активируйте его.
    3. Перейдите в меню Инструменты → Search Regex.
    4. Заполните поля:
      • Поиск (Search pattern) — сюда вводится искомый текст или регулярное выражение.
      • Замена (Replacement pattern) — новый текст, на который нужно заменить искомый.
    5. Нажмите кнопку «Поиск» (Search) — плагин покажет список записей, которые будут изменены, и продемонстрирует результат замены.
    6. Если все верно, нажмите «Заменить все» (Replace all) для применения изменений.

    Это минимальная инструкция для простого режима (Simple mode) плагина Search Regex:

    Простой режим (Simple mode) плагина Search Regex

    У плагина Search Regex есть расширенный режим (Advanced mode), который можно подключить на вкладке «Параметры» (Options). После подключения он будет доступен для выбора на вкладке «Поиск и Замена» справа от названия плагина.

    Расширенный режим (Advanced mode) плагина Search Regex

    Расширенный режим позволяет указать источник информации (таблицу базы дынных), например, «Записи (основные и пользовательские)». А также выбрать тип (типы) записей, например, «Записи» и/или «Страницы».

    Преимущества замены текста плагином

    • Поддержка регулярных выражений (Regex)
      Это главное преимущество. Вы можете использовать знаки подстановки для поиска по шаблону. Например, найти все ссылки на старый домен, независимо от пути: http://old-site\.com/(.*)
    • Функция предпросмотра
      Вы видите изменения до того, как они будут сохранены в базе. Это исключает случайную порчу контента.
    • Безопасная работа с данными
      Плагин разработан специально для WordPress и учитывает специфику хранения данных лучше, чем сырой SQL-запрос.
    • Удобный интерфейс
      Не нужно знать синтаксис SQL или структуру таблиц. Все настройки выведены в понятную форму.
    • Гибкость источников
      Можно искать и заменять текст не только в статьях, но и в комментариях, мета-полях, названиях файлов и опциях сайта.

    Регулярные выражения в плагине Search Regex

    Плагин Search Regex не использует простые знаки подстановки, такие как % и _ в MySQL для оператора LIKE. Вместо этого он работает с регулярными выражениями (Regular Expressions). Это мощный язык шаблонов, который позволяет описывать сложные паттерны.

    Вот основные метасимволы, которые используются для создания регулярных выражений в плагине Search Regex:

    Метасимвол (сочетание) Значение Пример Что найдёт
    . Любой один символ т.ст тест, тост
    * Повторение предыдущего символа ноль или более раз у*х х, ух, уух, ууух и т.д.
    + Повторение предыдущего символа один или более раз у+х ух, уух, ууух и т.д. (но не х)
    ? Повторение предыдущего символа ноль или один раз ко?рона корона, крона
    .* Любое количество любых символов дуб.*ый дуб зелёный, дуб раскидистый, дубовый
    ^ Начало строки ^Привет Привет (только если оно в начале строки)
    $ Конец строки конец$ конец (только если оно в конце строки)
    [] Набор символов [0-9]

    [а-я]

    любую цифру от 0 до 9

    любую строчную букву от а до я

    Так как в HTML абзацы заключены в теги <p></p>, для поиска начала и конца строки удобнее использовать следующие выражения: <p>Начало и конец</p>.

    Пример использования

    Вам нужно найти все ссылки на старый домен, где после домена может идти любой путь:

    • Поиск: https://old-site\.com/(.*)
    • Замена: https://new-site.com/$1
    • Пояснение: .* найдёт всё содержимое после слэша, а $1 вставит найденное в новую ссылку.

    Важно: в регулярных выражениях многие символы (например, точка .) являются служебными. Если нужно, чтобы они обозначали сами себя, перед ними ставят обратный слэш: \. (экранирование).

    Недавно мне надо было с помощью плагина Search Regex найти устаревшие ссылки в HTML-коде следующего вида

    и заменить их на URL главной страницы сайта:

    • Поиск: https://old-site.ru/.*"
    • Замена: https://new-site.ru/"
    • Пояснение: правильно было бы точку заэкранировать (\.), как в шаблоне выше, но она и так при поиске «находит саму себя», и всё работает как надо.

    Фокус со скобками

    В предпоследнем примере использовались выражения (.*) и $1. Для чего в выражении (.*) используются круглые скобки?

    Запись Что делает Можно использовать в замене?
    .* Находит любой текст Нет (текст просто удаляется)
    (.*) Находит и сохраняет любой текст Да (через $1)
    ([0-9]*) Находит и сохраняет только цифры Да (через $1)

    Скобки () создают группу захвата (capturing group). Всё, что совпадает с шаблоном внутри скобок, сохраняется в памяти. В поле «Замена» вы можете вставить этот сохраненный текст, используя обратную ссылку: $1 (для первой пары скобок), $2 (для второй) и так далее.

    Сравнительная таблица способов замены текста

    Характеристика phpMyAdmin (SQL) Плагин Search Regex
    Сложность Высокая (нужно знание SQL) Низкая (доступный интерфейс)
    Знаки подстановки Нет (только точное совпадение) Да (регулярные выражения)
    Предпросмотр Нет Есть
    Риск для сериализации Высокий Низкий
    Скорость работы Очень быстро Зависит от размера сайта
    Требуется доступ К хостингу/БД Только к админке WP

    Что выбрать для замены текста в базе данных?

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

    Используйте Search Regex, если:

    • Вам нужно заменить текст по шаблону (например, все телефоны, все ссылки определенного вида).
    • Вы хотите видеть предпросмотр изменений перед сохранением.
    • Вы не уверены в своих знаниях SQL.
    • Вы работаете с контентом, который может содержать сериализованные данные (например, посты из конструкторов страниц).

    Замена текста в базе данных — это инструмент, который экономит часы ручной работы. Однако сила этого инструмента требует осторожности. Для большинства задач современного WordPress, особенно тех, что требуют гибкости поиска, плагин Search Regex является более безопасным и удобным решением по сравнению с прямыми SQL-запросами через phpMyAdmin.

    И помните правило номер один: всегда делайте резервную копию сайта и базы данных перед любыми изменениями!