だから私はしばらくの間WordPressで作業してきました、そして私は通常ローカルで開発してから私のProdサーバーにすべてをアップロードします...しかし、特にプラグインを使用するとき、私は多くの異なる結果を経験しました。
私はたいていデータベースをエクスポートしますが、ドメインの場所のようなものは常にWP admin内でそれらを変更した後でさえも変更されるようには見えません。
DevからProdに移行し、すべてを損なわないための最善の方法は何ですか?
それでは、同じドメインのサブディレクトリから自分のサイトを移動するための最良の方法は何ですか?
WPドキュメントの方向に私を向けないでください...それが私が最初に見た場所です。
devとprodの間に違いはありません。これが私がしていることです:
このメソッドは、そうでなければよくある2つの違いを取り除きます。
。
。
Devサーバーはprodサーバーとまったく同じようにセットアップされています(サーバーをプログラム的に管理する方法については Chef または Puppet を参照してください)。
私の経験では、 検索と置換プラグイン を使用して、古いドメインへの参照をすべて再参照しています。最もきれいな解決策ではありませんが、うまくいくようです。
私は定期的に同じdev-prodの種類の配備をしているので、私はそれのためにいくつかの標準的な問い合わせを開発しました:
サイトのURLを更新します。
UPDATE wp_options SET option_value = replace(option_value、 '[DEV_URL]'、 '[PROD_URL]')WHERE option_name = 'home' OR option_name = 'siteurl' OR option_name = 'fileupload_url';
アップロードパスを更新します。
UPDATE wp_options SET option_value = '[SITE_ROOT_PATH]/wp-content/uploads' WHERE option_name = 'upload_path';
投稿ガイドを更新します。
UPDATE wp_posts SET guid = replace(guid、 '[DEV_URL]'、 '[PROD_URL]');
投稿のURLを更新します。
UPDATE wp_posts SET post_content = replace(post_content、 '[DEV_URL]'、 '[PROD_URL]');
かっこで囲まれた変数を実際の値に置き換えます。
[DEV_URL] - > http://example-local-pc.com [PROD_URL] - > http: //example-online-server.com [SITE_ROOT_PATH] - > /home/client/domains/example-online-server.com/html
これは通常、開発環境への参照を処理します。ただし、注意が必要です。
i)多くのプラグインはwp_optionsかカスタムテーブルのどちらかに絶対URLを保存します。これらはケースバイケースで調査しなければなりません。
ii)更新置換クエリ(上記の1.や2.など)を実行すると、シリアル化されたフィールドのデータがほぼ確実に破損します。関連するプラグインに自分自身で更新を行わせる以外に、この置き換えを行うためのまだクリーンで高速な手法には遭遇していません。これが成功するかどうかは、プラグインの堅牢性によって異なります。
クライアントにテストサイトへのアクセスを許可するために、サブディレクトリで開発するのが好きです。公開する準備ができたら、プラグイン(以下の推奨)を使用して全体を別のサブディレクトリに複製してから、新しいものからロードするようにWordPressに指示します。開発領域をテスト用にアクティブにしておく。
デュプリケータ (無料)または backupbuddy (有料)のようなプラグインを使用してください。私の質問 がここ で助けになるかどうかも確認してください。
私はこの検索置換ツールを使用します。
https://interconnectit.com/products/search-and-replace-for-wordpress-databases/
それはワードプレスと同様に他のソフトウェアのために働きます。
デプロイについては、サーバー上に環境を設定し、ドメインマッピング/仮想ホストを介して切り替えてライブにすることができます。インストールDevは常に別のサーバー上にあり、ライブになることはありません。
WordPressがデータベースにコンテンツを保存する方法による完璧な方法はありません。
コードをプッシュするためには、git/Mercurial/svnを使用するのと同じくらい完璧な場合もあれば、単にファイルを上書きする場合もあります。
しかし、データベースに格納されているコンテンツ(プラグイン、投稿、カテゴリなど)には当てはまりません。2つのデータベースを同期する良い方法はありません。 How to:WordPressのインストールを開発から本番に簡単に移行するには?