SearchReplace: безопасный поиск и замена в БД с сериализованными данными

24 октября 2021

Второй официально рекомендуемый способ глобального поиска с заменой по базе данных Вордпресс с поддержкой сериализованных данных.

Раньше с этим не заморачивались. Чтобы изменить имя домена или произвести какие-то глобальные замены по всему Вордпресс сайту, просто запускали поиск с заменой прямо по БД или ее дампу и меняли все что нужно. В сети ещё можно встретить немало таких «уроков», в т.ч. и у меня. Но потом стали замечать, что после таких замен иногда отваливаются виджеты, сбрасываются некоторые настройки сайта, опции тем, плагинов и т.п. Приходилось заново производить настройки, восстанавливать данные и т.д. Оказалось, Вордпресс некоторые объекты сериализует и хранит в БД в сериализованном виде. Естественно, прямые замены ломают их, и они просто теряются.

Я уже рассказывал про замечательный плагин Better Search Replace, который решает обозначенную проблему. Но его минус в том, что он работает только в админке. А замены часто требуется произвести на лежачем сайте, доступа в админку которого обычно нет.

Сегодня я покажу ещё один инструмент от разработчика Interconnect «SearchReplace» — скрипт, на базе которого, кстати, работает тот самый плагин Better Search Replace. Плюс этого скрипта в том, что он может работать вне Вордпресс с неограниченным количеством любых баз данных. Просто подключаемся к БД и производим с ней все необходимые манипуляции.

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

Скачиваем и разворачиваем скрипт на сервере, просто копируя его в любую директорию. Затем открываем браузер и обращаемся к скрипту.

Откроется такая страница

SearchReplace
Interconnect SearchReplace

В Database Details (2) указываем реквизиты БД: название, имя пользователя, пароль, хост и порт (2). Их можно посмотреть в wp-config нужного сайта. После заполнения рекомендую нажать кнопку «Test Connect» (2) для проверки соединения с БД. Если связь есть, можно переходить к заполнению первого блока: «Search for…» и «Replace with…» (1). Указываем, что найти и на что заменить. Вхождений может быть несколько, поддерживаются регулярные выражения.

В Which Tables (3) можно указать таблицы по которым ограничим поиск. Например, для поиска только по записям Вордпресс можно указать одну таблицу wp_posts. Или даже ограничиться одной или несколькими колонками. Например, лишь анонсами post_excerpt.

Перед боевым запуском обязательно запускаем «Do a test safe run» (4) и внимательно смотрим, что будет заменено. Если список ожидаемый, ещё раз удостоверяемся в наличии актуального бэкапа БД и нажимаем «Search and Replace» (5).

SearchReplace
Interconnect SearchReplace: пример настройки

Итак, мы познакомились с инструментом SearchReplace — вторым официально рекомендуемым способом глобальных замен в БД Вордпресс. Напомню, первый способ — плагин Better Search Replace, про который рассказывал в одной из прошлых публикаций. Третий (последний) способ — WP-CLI.

К сожалению, WP-CLI присутствует далеко не на всех хостинг-площадках. А главное, требует от пользователя некоторой подготовки и опыта работы с командной строкой. Поэтому, заслуживает, как минимум, отдельной публикации. И обязательно с глубокой предысторией о таком замечательном инструменте, как WP-CLI.

Иван Данилин
Автор Иван Данилин

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

Добавить комментарий