WordPress移行時にウィジェットやMW WP Formの内容が移行できない場合の解決策

以下の手順でテスト環境から本番環境に移行するとウィジェットやMW WP Formの一部の内容が何も設定されていない初期状態になることがありました。

  1. テスト環境のphpMyAdminからSQLをエクスポートする
  2. テキストエディタでエクスポートしたSQLのテストURLを本番URLに置換する
  3. 本番環境のphpMyAdminからSQLをインポートする

原因

いろいろと調べた結果、WordPressではウィジェットや特定のプラグインは、シリアライズされた上でデータベースに保存され、その際にデータのバイト数も保存される。
この為、テストURLと本番URLのバイト数が一致せず、移行できないようです。

解決方法

手順2の作業が原因の為、phpMyAdminの「SQL」から置換作業を行いました。

phpMyAdmin

1.テスト環境のphpMyAdminからSQLをエクスポートする
2.本番環境のphpMyAdminからSQLをインポートする
3.phpMyAdminの上部メニューの①の「SQL」をクリックします。
4.以下のSQL文を②のエリアに記述します。

UPDATE wp2_options SET option_value=REPLACE(option_value,"テストURL","本番URL");UPDATE wp2_posts SET post_content=REPLACE(post_content,"テストURL","本番URL");UPDATE wp2_posts SET guid=REPLACE(guid,"テストURL","本番URL");UPDATE wp2_postmeta SET meta_value=REPLACE(meta_value,"テストURL","本番URL");※wp2_XXXの部分は環境によって変わるので注意!

5.最後に③「実行」をクリックします。

この方法で無事にウィジェットやMW WP Formの内容も移行できました。

read next