Sustituir el dominio en la base de datos de WordPress tras migrar el sitio
Generador de scripts para cambiar la dirección del sitio en la base de datos: WP-CLI o SQL puro para phpMyAdmin. Indique el prefijo de las tablas y los dominios antiguo y nuevo: la herramienta hace el resto. Todo se genera en su navegador: las direcciones introducidas no se envían a ningún sitio.
wp-config.php: $table_prefix. Por defecto wp_
Rellene el dominio antiguo y el nuevo para ver el script.
El script se genera en su navegador: los dominios introducidos no se envían a ningún sitio ni se guardan.
Чому «просто REPLACE по всій базі» ламає сайт
WordPress зберігає частину налаштувань у PHP-серіалізованому вигляді, де довжина кожного рядка записана окремим числом: a:1:{s:4:"logo";s:26:"http://old.com/logo.png";} Число 26 — це довжина адреси у байтах. Звичайний REPLACE змінить саму адресу, але не чіпне число. Після цього unserialize() повертає false, і значення читається як порожнє. Найчастіше так втрачаються віджети, налаштування теми (theme_mods), поля ACF та дані Elementor — тобто саме те, що складніше за все відновити. Тому режим «WP-CLI» стоїть за замовчуванням: wp search-replace розпаковує серіалізовані структури і перераховує довжини коректно.
Одна адреса — п’ять різних записів у базі
Друга причина, чому після переносу «половина посилань лишилась старими»: той самий домен лежить у базі в кількох формах одночасно. http://old.com — звичайний вигляд https://old.com — інша схема, якщо сайт переїхав на SSL уже після наповнення //old.com — protocol-relative у старих темах http:\/\/old.com — екрановані слеші всередині JSON: так адреси зберігають блоки Gutenberg і поле _elementor_data http%3A%2F%2Fold.com — urlencoded у redirect-плагінах та кеші oEmbed Інструмент генерує заміну для кожної увімкненої форми окремо, у правильному порядку: protocol-relative йде останнім, бо є підрядком повної адреси.
