Serialized Data, What Does That Mean And Why is it so Important?

Note: This article is for people interested in programming. If you just like to use WP Staging you do not need to read or understand the article below.

WordPress core and most of its plugins are storing data in the database in a special format, so called serialized data representation. That type is used for storing or passing PHP values without losing their type or structure.

Without getting too technically here it’s important to know that the serialized data representation can handle nearly all data types like arrays, strings and objects.

Let’s have a look at how WordPress plugins and themes typically store values in the database. After that you understand why we just can not do a simple search and replace through the database when we clone wordpress from one location to another.

Let’s say a theme is creating an array for storing a color and a path:

In pure PHP it looks like that

$settings = array(
'color' => 'green',
'path' => 'https://domain.com'
);

When that array is stored in the database it is converted into the serialized representation and looks like that:

a:2:{s:5:"color";s:5:"green";s:4:"path";s:18:"https://domain.com";}

The advantage is that the serialized data representation can be stored in the database much easier than the PHP array. The drawback is that the serialized data can not be changed by a simple search & replace like you would do with a text editor.

If you just change the color or the path the serialized data representation would be broken and could not be used by PHP any longer. As a result the plugin would not be working any longer or much worst, WordPress  would be broken as well.

The reason is that the serialized data is also storing the length of the values in the serialized data representation.

If you change the path domain.com  to host.com you also need to change the value of s:18 to s:16 because https://host.com only contains 16 values instead 18.

If you do that programmatically, the serialized data needs to be converted back into an array. From there it can replaced by just changing the array values.

As you already notice, doing that manually with hundreds or even thousands of values in a WordPress database is an impossible task. That’s why WP Staging is doing all that unserialization and serialization automatically for you and while it is doing that step it replaces the corresponding values to the new ones when a WordPress clone is created.

WP Staging supports search and replace of serialized Data
WP Staging supports search and replace of serialized data