Skip to content

Tudo para WordPress, desenvolvimento web — e não só

Substituir o domínio na base de dados do WordPress após migrar o site

Gerador de scripts para alterar o endereço do site na base de dados: WP-CLI ou SQL puro para o phpMyAdmin. Indique o prefixo das tabelas e os domínios antigo e novo — a ferramenta faz o resto. Tudo é gerado no seu navegador: os endereços introduzidos não são enviados para lado nenhum.

De wp-config.php: $table_prefix. Por omissão wp_
Modo
Formas de escrita do URL O mesmo domínio está guardado na base de dados em várias formas. Substituir apenas a primeira é a principal razão para «metade das ligações ter ficado antiga».
Tabelas
Opções adicionais
Preencha o domínio antigo e o novo para ver o script.

O script é gerado no seu navegador — os domínios introduzidos não são enviados para lado nenhum nem guardados.

Чому «просто 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 йде останнім, бо є підрядком повної адреси.

Часті питання