
注意: この記事は、WordPress がどのように技術的にデータを保存しているかに興味のある方向けです。単に WP Staging を使用したいだけの場合は、以下の記事を読んだり理解したりする必要はありません。
WordPress コアとそのほとんどのプラグインは、データベースに特定の形式、いわゆるシリアライズデータ表現でデータを保存しています。このタイプは、PHP の値をその型や構造を失うことなく保存または受け渡すために使用されます。 ここではあまり技術的になりすぎないようにしますが、シリアライズデータ表現が配列、文字列、オブジェクトなど、ほぼすべてのデータ型を扱えることを知っておくことが重要です。 WordPress のプラグインやテーマがデータベースに値を保存する典型的な方法を見てみましょう。それを理解すると、WordPress をある場所から別の場所にクローンするときに、なぜデータベース全体で単純な検索と置換ができないのかが分かります。 テーマが色とパスを保存するために配列を作成しているとしましょう: 純粋な PHP では、次のようになります:
$settings = array(
'color' => 'green',
'path' => 'https://domain.com'
);
その配列がデータベースに保存されると、シリアライズされた表現に変換され、次のようになります:
a:2:{s:5:"color";s:5:"green";s:4:"path";s:18:"https://domain.com";}
利点は、シリアライズデータ表現は PHP 配列よりもはるかに効果的にデータベースに保存できることです。欠点は、テキストエディタで行うような単純な検索と置換でシリアライズデータを変更することはできないことです。
色やパスを変更しただけでも、シリアライズデータ表現は壊れ、PHP で使用できなくなります。その結果、プラグインが機能しなくなったり、さらに悪いことに、WordPress 自体も壊れてしまいます。
理由は、シリアライズデータがシリアライズデータ表現で値の長さも保存しているからです。
domain.com から host.com にパスを変更する場合、https://host.com は 18 文字ではなく 16 文字しか含まれていないため、s:18 の値も s:16 に変更する必要があります。
プログラム的にこれを行う場合、シリアライズデータは配列に戻す必要があります。そこから、配列の値を変更するだけで置換できます。
すでにお気づきのように、WordPress データベース内の何百、いや何千もの値に対してこれを手動で行うことは不可能な作業です。だからこそ、WP Staging はそのデシリアライズとシリアライズをすべて自動で行います。そのステップを実行している間、WordPress クローンが作成されるときに対応する値を新しい値に置換します。
