Wordpressデータベースのドメイン名を置き換える方法は?


12

私は開発環境にインストールされたWordpressデータベースを持っています...したがって、サイト自体へのすべての参照は固定IPアドレス(たとえば192.168.16.2)を持っています。次に、そのデータベースをホスティング上の新しいWordpressインストールに移行する必要があります。問題は、SQLダンプにIPアドレスへの多くの参照が含まれていることです。これをmy_domain.comに置き換える必要があります。

sedまたは他のコマンドを使用してコマンドラインからそれを変更できますが、問題は、JSONを使用する構成データがたくさんあることです。だから何?ご存知のとおり、JSON配列は次のようなものを使用します。s:4:要素の文字数を知るため、IPをドメイン名に置き換えるだけでは、構成ファイルが破損します。

数年前にWindowsのアプリを使用して、データベースの値を変更し、JSON配列を処理できるようにしました。残念ながら、アプリの名前を忘れてしまいました...だから問題は、私がやりたいことができるアプリを知っていますか?


1
これは完全な答えではありませんが、1つを検索するときに役立つ場合があります。探しているデータはJSON形式ではありません。JSONは(通常)そのような値のタイプと長さを格納しません。あなたが見ているのはシリアライズされたデータです。:これかもしれない助け、このページを生成する「連載置き換えるMYSQL」のためのGoogle検索davidcoveney.com/...
MathSmath

ねえ、あなたのコメントは私にとって有用だった唯一の答えです...それを正しいものとしてマークするために答えに移動してください。ありがとう!
クリスティアン

それが役に立ててうれしい!回答として投稿しました。
MathSmath 2010

回答:


7

表示しているデータはJSON形式ではありません。JSONは(通常)そのような値のタイプと長さを格納しません。あなたが見ているのはシリアライズされたデータです。「mysql replace serialized」をグーグルで検索すると、このページが表示されます。これは役立つ場合があります。http//davidcoveney.com/mysql-database-search-replace-with-serialized-php/


ありがとう...私はPHP開発者として2年間働いていました。シリアル化されたものとJSON文字列の違いを忘れてしまったとは信じられません。
クリスチャン

8

コーデックスにはまともなガイド- サイトのURLの変更があります

基本的に、URLの問題があるか、それほど多くない場所がいくつかあります(いくつか不足している可能性があります)。

  • homeそしてsiteurlWPがサイトがどこにあると考えるかを制御するオプション;
  • GUIDを投稿すると、リンクのように見えますが、実際にはそうではなく、識別子のみです。それらが無関係であるかどうかは確実ではありませんが、テストスタックでURLを何度も変更したため、これらを更新する気になりませんでした。
  • 投稿本文のリンク。
  • プラグイン設定にリンクしている可能性があります。

かなりの数のステップがあります。mv olddir.com newdir.comウェブサーバーを再設定する必要がある場合は、ウェブサーバーを再起動します。ここでコーデックスの指示に従うと、管理者としてログインできるはずです。それであなたは始められるはずです:-)
PJ Brunet 2015

6

ラーストが上で述べたように、データベースにはNEEDSが変更する設定は2つしかありません。データベースをインポートした後、PHPMyAdminにログインし、データベースを直接編集します。

私はPCで常に開発サーバーを使用してデータフィードをインポートし、http:// localhost / testsite / post-name /の行に沿って投稿にURLが添付されているため、問題が発生することはありません。

私はSQLの検索を使用して、それが問題ではないと気づくまで置き換えました。いくつかのサイトをあるドメインから別のドメインに移行し、コンテンツに絶対URLが含まれている場合は、SQL検索と置換オプションを使用します。

update wp_posts set post_content = replace(post_content,'http://www.olddomain/','http://www.newdomain/');

デビッド


ContactForm7のようないくつかのプラグインがあり、他の構成変数とともにドメイン名をシリアル化された文字列内に保存します。シリアル化された文字列を変更する場合、その長さが変更されると文字列が破損する可能性があるため、実際には、2つの設定を変更するだけではなく、変更することが多くあります。
クリスティアン


3

これらの値は、で定数を使用して設定できますwp-config.php。この後、必要に応じて、プラグインの管理者を介してデータベースのエントリを変更できます。これをにwp-config.php書き込んでください。DBの値は関係ありません。

define('WP_HOME', 'http://example.com/to-wordpress');
define('WP_SITEURL', 'http://example.com/to-blog');


2

単純なSQLクエリ-複雑なREPLACEは必要ありません。

update wp_options set option_value = 'http://mynewdomain.com' where option_name = 'siteurl';

update wp_options set option_value = 'http://mynewdomain.com' where option_name = 'home';

PHPMyAdminなど、データベースにアクセスする方法を使用してください。


2

新しいデータベースが選択されていることを確認してから、テーブル、特にwp_options、wp_posts、wp_postmetaに対して、いくつかのSQL更新と置換コマンドを実行します。

以下のコードを使用して、スラッシュを付けずに、古いURLと新しいURLを入れ替えます。また、必要に応じて、必要に応じてテーブルのプレフィックス値を変更します(つまり、wp_)。

UPDATE wp_options SET option_value = replace(option_value, 'http_www.oldurl', 'http_www.newurl') WHERE option_name = 'home' OR option_name = 'siteurl';    
UPDATE wp_posts SET guid = replace(guid, 'http_www.oldurl','http_www.newurl');    
UPDATE wp_posts SET post_content = replace(post_content, 'http_www.oldurl', 'http_www.newurl');    
UPDATE wp_postmeta SET meta_value = replace(meta_value,'http_www.oldurl','http_www.newurl');

1

これは非常に古い質問ですが、何か他のものを探しているときに出くわしたので、将来の参考のために追加すると思いました。

これを行う最も簡単で完全な方法は、searchreplacedb2.phpを使用することだと思います。それはここで見つけることができます:http : //interconnectit.com/products/search-and-replace-for-wordpress-databases/とその使用方法の説明。

私のワードプレスサイトの開発環境からライブ環境に移行することで、時間を大幅に節約できました。

完了したら、必ずパブリックサーバーから削除してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.