BASH
#wordpress#bash#migration#database#url#serialized#wp-cli

Поиск и замена URL после миграции WordPress (с учётом serialized)

Безопасная замена URL через wp search-replace с учётом serialized данных в БД (важно для опций, виджетов).

Как использовать

  1. Скопируйте нужный фрагмент кода.
  2. Вставьте в свой проект и при необходимости измените под задачу.
  3. Проверьте зависимости и окружение (версии, переменные).

Безопасная замена старых URL на новые после миграции WordPress с учётом serialized данных. Используйте WP-CLI для корректной замены в БД.

# 1. Сначала делаем бэкап БД (ОБЯЗАТЕЛЬНО!)
wp db export backup-before-replace-$(date +%Y%m%d).sql

# 2. Поиск и замена с учётом serialized (рекомендуемый способ)
wp search-replace 'https://old-site.com' 'https://new-site.com' --all-tables --dry-run

# 3. Если всё ок, убираем --dry-run и выполняем
wp search-replace 'https://old-site.com' 'https://new-site.com' --all-tables

# 4. Замена с учётом www (если нужно)
wp search-replace 'https://old-site.com' 'https://www.new-site.com' --all-tables

# 5. Замена в конкретной таблице (если нужно точечно)
wp search-replace 'https://old-site.com' 'https://new-site.com' wp_posts --dry-run

# 6. Замена только в опциях (часто нужно для siteurl/home)
wp search-replace 'https://old-site.com' 'https://new-site.com' wp_options

# 7. Обновление siteurl и home в опциях (альтернативный способ)
wp option update siteurl 'https://new-site.com'
wp option update home 'https://new-site.com'

# 8. Проверка результатов
wp search-replace 'https://old-site.com' 'https://new-site.com' --all-tables --dry-run

Ручная замена через SQL (если WP-CLI недоступен, но ОСТОРОЖНО с serialized):

-- ВНИМАНИЕ: это может сломать serialized данные!
-- Используйте только если понимаете последствия

UPDATE wp_options SET option_value = REPLACE(option_value, 'https://old-site.com', 'https://new-site.com');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'https://old-site.com', 'https://new-site.com');
UPDATE wp_posts SET guid = REPLACE(guid, 'https://old-site.com', 'https://new-site.com');

Usage:

Запустите команды в корне WordPress. Всегда сначала используйте --dry-run для проверки. После замены очистите кеш (если есть плагин кеширования).

Notes:

⚠️ WP-CLI автоматически обрабатывает serialized данные (опции, виджеты, ACF поля). Прямая SQL-замена может сломать serialized строки — используйте только если уверены. После замены проверьте виджеты и настройки плагинов (ACF, WooCommerce и т.д.).