Поиск и замена URL после миграции WordPress (с учётом serialized)
Безопасная замена URL через wp search-replace с учётом serialized данных в БД (важно для опций, виджетов).
Как использовать
- Скопируйте нужный фрагмент кода.
- Вставьте в свой проект и при необходимости измените под задачу.
- Проверьте зависимости и окружение (версии, переменные).
Безопасная замена старых 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 и т.д.).