
Nota: Este artículo es para personas interesadas en cómo WordPress almacena técnicamente sus datos. Si solo te gusta usar WP Staging, no necesitas leer ni entender el artículo a continuación.
El núcleo de WordPress y la mayoría de sus plugins almacenan datos en la base de datos en un formato particular, la denominada representación de datos serializados. Este tipo se utiliza para almacenar o pasar valores de PHP sin perder su tipo o estructura. Sin entrar demasiado en tecnicismos aquí, es esencial saber que la representación de datos serializados puede manejar casi todos los tipos de datos, como arrays, cadenas y objetos. Echemos un vistazo a cómo los plugins y temas de WordPress almacenan típicamente los valores en la base de datos. Después de eso, entenderás por qué no podemos simplemente hacer una búsqueda y reemplazo a través de la base de datos cuando clonamos WordPress de una ubicación a otra. Supongamos que un tema crea un array para almacenar un color y una ruta: En PHP puro, se ve así:
$settings = array(
'color' => 'green',
'path' => 'https://domain.com'
);
Cuando ese array se almacena en la base de datos, se convierte en la representación serializada y se ve así:
a:2:{s:5:"color";s:5:"green";s:4:"path";s:18:"https://domain.com";}
La ventaja es que la representación de datos serializados se puede almacenar en la base de datos de manera mucho más efectiva que el array PHP. La desventaja es que los datos serializados no se pueden cambiar mediante una simple búsqueda y reemplazo como lo harías con un editor de texto.
Si simplemente cambias el color o la ruta, la representación de datos serializados se rompería y PHP ya no podría utilizarla. Como resultado, el plugin ya no funcionaría o, mucho peor, WordPress también se rompería.
La razón es que los datos serializados también almacenan la longitud de los valores en la representación de datos serializados.
Si cambias la ruta de domain.com a host.com, también necesitas cambiar el valor de s:18 a s:16 porque https://host.com solo contiene 16 caracteres en lugar de 18.
Si lo haces de forma programática, los datos serializados deben convertirse de nuevo en un array. A partir de ahí, se pueden reemplazar simplemente cambiando los valores del array.
Como ya notas, hacer eso manualmente con cientos o incluso miles de valores en una base de datos de WordPress es una tarea imposible. Por eso WP Staging realiza toda esa deserialización y serialización automáticamente para ti. Mientras realiza ese paso, reemplaza los valores correspondientes por los nuevos cuando se crea un clon de WordPress.
