web-dev-qa-db-ja.com

ローカルの単一サイトデータベースをリモートのマルチサイトデータベースに移動する方法

私はかなりWordpressに慣れていません、そして私は私のローカルサーバーからデータベースを取り出して、そしてWordpressマルチサイトの上のサーバー上のデータベースとそれを置き換える方法について少し混乱しています。

以前はローカルからサーバーにデータベースを置き換えましたが、マルチサイトでした。

私が通常取るステップは:

  1. サーバー上のデータベースをバックアップする
  2. ローカルデータベースのエクスポート
  3. サーバーデータベースのすべてのテーブルを削除する
  4. ローカルデータベースをインポートする
  5. wp_optionに行きます
  6. siteurlの値とサイトのURLのホームを変更する

試してみると、サーバー上のテーブルはローカルのテーブルとは大きく異なります。

私のローカルデータベース構造は次のようになります。

enter image description here 

通常、サーバーデータベースは同じですが、この場合は違います。

サーバーデータベースの構造

enter image description here 

だから私はこれに取り組む方法について少し混乱しています。それでも私はいつもしていることをやることができますか、または私がとる必要がある追加のステップがありますか?

前もって感謝します。

編集:私はこれを少し過度に複雑にしたと思います、私はただサーバー上に新しいデータベースを作成し、代わりにwp_config.phpファイルを指すことができ、そしてすべてが良いはずです

編集2:nopeは思ったようには動きません。リダイレクトループエラーが発生し続ける

編集3: @ Michael Ecklund に感謝します。プライマリページのデータベースを更新していたので、新しいサイトを作成する必要はありませんでしたが、それでも残りの 指示に従ってください 彼は書いて、それはかなりスムーズになりました。最初は少し混乱していましたが、それは私自身の知識不足でした。

編集4:データベースの移行を行った後にダッシュボードへのアクセスを失ったとしたら、ちょっとしたFYI。メインデータベースと* _options(私の場合はtenp_options)テーブルに移動し、option_name列の下でwp_user_rolesを探し、その列名をサイトのプレフィックス(私の場合はtenp_)に変更します。もう一度ダッシュボードにアクセスします。

2
Radizzt

WordPressマルチサイトインストールとWordPressスタンドアロンインストールのマージ

始める前に:

  1. マルチサイトネットワークに新しいサイトを作成します。これが、スタンドアロンインストールから移行するサイトになります。 (サイトID番号を書き留めます。後で必要になります)。
  2. スタンドアロンインストールのすべてのユーザーが作成され、Multisiteインストールに存在することを確認する必要があります。

ステップ1 - データベースのバックアップ.

WordPressのスタンドアロンコピーがインストールされているWebサーバー上のディレクトリとWordPressのマルチサイトコピーがインストールされているWebサーバー上のディレクトリを見つけて、両方のインストールのwp-config.phpファイルを開きます。 PHP定数DB_NAMEを見つけます。 WordPressの特定のインストールが使用しているデータベースの名前が含まれています。

  1. スタンドアロンのインストールのデータベースをバックアップします。
  2. Multisiteインストールのデータベースをバックアップします。

手順2 - データベーステーブルのプレフィックスを識別する.

デフォルトでは、データベーステーブルのプレフィックスはwp_です。

データベースを調べてもデータベーステーブルのプレフィックスを特定できない場合。あなたはあなたのWordPressインストールのベースディレクトリを調べて問題のサイトのwp-config.phpファイルを開き、$table_prefix = 'wp_';のような行を探すことができます。

あなたの状況では、それはのようになります:

  • スタンドアロンインストールのデータベーステーブルのプレフィックスは、デフォルトのwp_です。
  • Multisiteインストールのデータベーステーブルプレフィックスはtenp_の習慣です。

ステップ3 - データベースのエクスポートローカル環境にインポートします。

ローカルのデータベースサーバーで、これらの各データベース用に一時データベースを作成します。おそらく、物事を単純にするために、1つのデータベースに "standalone"、2番目のデータベースに "multisite"というラベルを付けます。

  • スタンドアロンデータベースのデータベース(エクスポートしたもの)をローカルデータベースサーバーの "standalone"データベース(今作成したもの)にインポートします。
  • Multisiteインストールのデータベース(先ほどエクスポートしたもの)をローカルデータベースサーバー上の "multisite"データベース(今作成したもの)にインポートします。

ステップ4 - 検索と置換.

これが、必要なURLの変更を置き換える可能性があるステップです。 (httpからhttpsへ)、(非wwwからwwwへ)、(URLへのディレクトリの追加または削除)など.

ローカルのデータベースサーバーに作成した "standalone"データベースでこのタスクを実行します。

あなたがそれらをMultisiteインストールの中でどのようにしたいかということに物事を変えることを忘れないでください(最終結果)。

この手順では、データベースツールが必要になります:

  1. WP-CLI :: wp検索置換 これはすべてコマンドラインです。
  2. あるいは、GUIを好むのであれば、 データベース検索と置換スクリプトをPHPによるinterconnect/it があります。

ステップ4.2 - ユーザーと投稿者

スタンドアロンインストールからすべてのユーザーに関するメモを作成し、古いユーザーIDを新しいユーザーIDに(Multisiteインストールから)マップすることをお勧めします。

単に一時的なテキストファイルを作成して次のようにするだけです。

1 => 4
8 => 23
15 => 9

左側の数字はスタンドアロンインストールのIDで、右側の数字はMultisiteインストールのIDです。

次に、post_authorテーブルのwp_posts列を更新して、古いユーザーIDをすべて新しいユーザーIDに更新します。そうでなければ、スタンドアロンからマルチサイトへのあなたの移行されたサイトを見るとき、あなたは1つの混乱した子猫になるでしょう。それはあなたのサイト上のものがランダムな人々、そしておそらくあなたのネットワーク内の異なるサイトからの人々によってさえ投稿されると言うことになるでしょう。見落とされるならば、これは破滅的になることができます。

テキストファイルの各ユーザーIDマッピングに対して、MySQLに次のようなコマンドを発行します。

UPDATE wp_posts
SET post_author = '4'
WHERE post_author = '1'
  • SET post_author = '4'行は新しいユーザーID(MultisiteインストールからのユーザーID)です。
  • WHERE post_author = '1'は古いユーザーID(スタンドアロンインストールからのユーザーID)です。

ステップ5 - ユーザーとUsermeta

私はまだこのステップのための良い解決策をまだ見つけていません。私は通常、Multisiteインストールでユーザーを手動で再作成するだけです。

言い換えれば、私は通常2つのテーブルwp_userswp_usermetaをドロップするだけです。

誰かがこのステップを改善したい場合は、ここで自由にガイダンスを編集して追加してください。

手順6 - データベーステーブル名の更新

このステップはステップ4とよく似ています。

ローカルデータベースサーバーの "standalone"データベースで、古いテーブル名を新しいテーブル名にマップします。

これはあなたのMultisiteインストールからサイトIDを知る必要があるステップです。

例として:あなたのサイトIDが15で、あなたのMultisiteインストールでのあなたのデータベーステーブルプレフィックス使用がtenp_なら、データベーステーブルwp_poststenp_15_postsになります。

データベーステーブル名を更新するために使用できるMySQLコマンドは次のとおりです。

RENAME TABLE `wp_posts` 
TO `tenp_15_posts`;
  • 最初の行は古いデータベーステーブル名(スタンドアロンインストールからのデータベーステーブル名)です。
  • 2行目は、新しいデータベーステーブル名(Multisiteインストールで使用されるデータベーステーブル名の形式)です。

データベースが十分に小さい場合もあります。データベース全体をエクスポートして、テキストエディタで開くことができます。それからすべてを見つけて交換してください。完了したら保存します。

ステップ7 - エクスポートとインポート

上記の変更がすべて完了したら、ローカルデータベースサーバーから "standalone"データベースをエクスポートします。

  1. エクスポートした.sqlファイルをローカルデータベースサーバーの "multisite"データベースにインポートします。
  2. ローカルのデータベースサーバーから "multisite"データベースをエクスポートします。
  3. 既存のMultisiteデータベースに使用されている現在のMultisiteデータベーステーブルを削除します(ローカルデータベースサーバー上のテーブルではありません)。
  4. ローカルのデータベースサーバーからエクスポートした "multisite"データベースの.sqlファイルをインポートし、既存のMultisiteインストールで使用されているデータベース(すべてのテーブルを削除したもの)にインポートします。基本的には、現在のMultisiteインストールのデータベースを、新しく移行されたStandaloneサイトを含む変更されたデータベースに置き換えるだけです。

移動./wp-content/.からファイルをアップロードします

スタンドアロンストアとマルチサイトストアでは、ファイルのアップロード方法が異なります。マルチサイトはそれらを./wp-content/sites/{$site_id}/に格納します。アップロードしたファイルも適切に移動してください。


プライマリサイトの変更:

Multisiteデータベースでデータベーステーブルwp_siteを探します。列iddomainを適切に編集します。

site_idテーブルのwp_blogs列も編集する必要があるかもしれません。

これらの行についてもwp-config.phpを見て、もう一度、それに応じてそれらを調整してください。

define( 'DOMAIN_CURRENT_SITE', 'www.your-domain.com' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );

便利なリンク:


End.

混乱を招くようなことがあれば、コメントしてください。それを解決しようとします。

1
Michael Ecklund

データベースは確かにmultiwpのために異なって設定されています、それらのtenp_12はマルチサイトの各サイトのための接頭辞です。ローカルで運営しているサイトはマルチサイトではないようです。 (プライマリではない)別のサイトを追加しようとしている場合の私の提案は、まずマルチサイトダッシュボードからそのサイトを追加し、そのサイトにテーブルをドロップします(つまりtenp_x、xはサイトIDに似ています)。これは、カラム名だけでなくテーブル名もプリアンプリネームする必要があります。その後、ポイント6で説明したように、siteurlの値とサイトのURLのホームの値を設定できます。

1
DGRFDSGN