
Nota: Este artigo é para pessoas interessadas em como o WordPress armazena tecnicamente seus dados. Se você apenas gosta de usar o WP Staging, não precisa ler ou entender o artigo abaixo.
O núcleo do WordPress e a maioria de seus plugins armazenam dados no banco de dados em um formato específico, a chamada representação de dados serializados. Esse tipo é usado para armazenar ou passar valores PHP sem perder seu tipo ou estrutura. Sem ficar muito técnico aqui, é essencial saber que a representação de dados serializados pode lidar com quase todos os tipos de dados, como arrays, strings e objetos. Vamos dar uma olhada em como os plugins e temas do WordPress geralmente armazenam valores no banco de dados. Depois disso, você entenderá por que simplesmente não podemos fazer uma busca e substituição no banco de dados quando clonamos o WordPress de um local para outro. Digamos que um tema esteja criando um array para armazenar uma cor e um caminho: Em PHP puro, fica assim:
$settings = array(
'color' => 'green',
'path' => 'https://domain.com'
);
Quando esse array é armazenado no banco de dados, ele é convertido na representação serializada e fica assim:
a:2:{s:5:"color";s:5:"green";s:4:"path";s:18:"https://domain.com";}
A vantagem é que a representação de dados serializados pode ser armazenada no banco de dados de forma muito mais eficaz do que o array PHP. A desvantagem é que os dados serializados não podem ser alterados por uma simples busca e substituição como você faria com um editor de texto.
Se você simplesmente alterar a cor ou o caminho, a representação de dados serializados ficaria quebrada e não poderia mais ser usada pelo PHP. Como resultado, o plugin não funcionaria mais ou, muito pior, o WordPress também ficaria quebrado.
O motivo é que os dados serializados também armazenam o comprimento dos valores na representação de dados serializados.
Se você alterar o caminho de domain.com para host.com, também precisa alterar o valor de s:18 para s:16 porque https://host.com contém apenas 16 caracteres em vez de 18.
Se você fizer isso programaticamente, os dados serializados precisam ser convertidos de volta em um array. A partir daí, eles podem ser substituídos apenas alterando os valores do array.
Como você já percebeu, fazer isso manualmente com centenas ou até milhares de valores em um banco de dados WordPress é uma tarefa impossível. É por isso que o WP Staging faz toda essa desserialização e serialização automaticamente para você. Enquanto realiza essa etapa, ele substitui os valores correspondentes pelos novos quando um clone do WordPress é criado.
