web-dev-qa-db-ja.com

サイトを別のドメインに移動した後、すべての画像が失われる

私はwww.domain1.comからwww.domain2.comに移動しました

ただし、イメージパスはまだwww.domain1.com/wp-content/uploads...を指しています。そのため、www.domain1.comがダウンしたとき、私のすべての画像はもう表示されていません。

すべての添付ファイルがwp_postsを指すようになったwww.domain2.com/wp-content/uploads...テーブルを更新しましたが、画像はwww.domain2.comに存在し、それでも画像が表示されません。キャッシングがオフになっていますか

3
p.a.

古い画像のURLを変更する必要があるようです。それをするための最も簡単で最速の方法はMySQLデータベースで検索と置換をすることです。

PHPMyAdmin(通常はWebホストによって提供される)またはSequel Proなどの他のMySQL編集ソフトウェアを使用して、WordPress管理領域に触れることなくMySQLデータベースに変更を加えることができます。つまり、SQLクエリを1つずつ作成するのではなくSQLクエリを実行することで、大規模な変更を加えることができます。これは面倒で時間がかかります。

最初にデータベースのバックアップを取ってください。 PHPMyAdminでこれを行うには、左側のサイドバーからデータベースを選択してから、[エクスポート]をクリックします。 "単純な"方法で結構ですが、もっと細かく制御したい場合は "カスタム"方法でたくさんの選択肢が得られます。

バックアップを取った後、SQLタブをクリックして以下をテキストエリアに貼り付けてください。

UPDATE wp_options SET option_value = replace(option_value, 'oldurl', 'newurl') WHERE option_name = 'home' OR option_name = 'siteurl';

UPDATE wp_posts SET guid = replace(guid, 'oldurl','newurl');

UPDATE wp_posts SET post_content = replace(post_content, 'oldurl', 'newurl');

UPDATE wp_postmeta SET meta_value = replace(meta_value,'oldurl','newurl');

そして、 "oldurl"を古いURLに、 "newurl"を新しいURLに置き換えます。ただし、http://のまま末尾のスラッシュは削除します。もう一度確認して、問題なければ[Go]ボタンをクリックしてください。

サイトに移動して、画像が機能しているかどうかを確認します。そうでない場合、それは通常タイプミスが原因です。これはプロセスの最初に行ったバックアップからデータベースを復元してやり直すことで解決できます。

このサイト には、WordPressドメイン移行のための拡張ガイドがあります。これには、SQLクエリを生成するためのスクリプトへのリンクもあります。

4
Steve Mitchell

あなたはすでにあなたの答えを知っているかもしれませんが、私は強くあなたにDBSR(db検索置換)を使うことを強くお勧めしますdomain1のすべての出現をdomain2で置き換えます。そのためのツールがあります。これはかなりきれいです: https://github.com/interconnectit/Search-Replace-DB

プロセス全体を説明します。良いUIがあります。

これにより、DBレコードに関してすべて問題ないことが確認できます。

0
JMau

リンクだけで質問に答えるという危険を冒して、このページ( http://codex.wordpress.org/Moving_WordPress )にある以下のステップがあなたが探しているものだと思います。

ドメイン名とURLを変更する

データベース内の古いドメイン名のすべてのインスタンスを安全に新しいドメイン名に変更する必要があります。次のいずれかを使用してそれを実行できます。

  1. Wp_postsテーブルで検索と置換のみを実行してください。

  2. すべてのインスタンスを安全に変更するには、 WordPressデータベースの検索と置換スクリプト を使用します。 (あなたが開発者であれば、このオプションを使用してください。以下の15ステップの手順とは対照的に、1ステップのプロセスです)

  3. 必要に応じて、オンラインツールを使用することもできます(サーバーにスクリプトをアップロードすることに煩わされたくない場合) オンラインWordPressシリアル化PHP検索と置換 またはシリアル化されたデータを同時に修正しながら、新しいURLでURLを指定します。

そのページには、他にも多くの役立つWP移行情報があります。

0
eyedarts

とても簡単な方法

このプラグイン Velvet をあなたのワードプレスバックエンドにインストールしてください。

今ベルベットの設定に行き、あなたの古いドメインを入力し、新しいドメインを入力してください。更新ボタンを押す。あなたは終わった

0
Atif Aqeel

WP Migrate DBを使用して、エクスポートデータベースのZipにURLを置き換えます。

このプラグインを使用すると、ウィジェットやシリアル化データを失うことはできません。

enter image description here 

0
ravi patel

あなたはwp_postsデータをwww.domain2.comに更新したと言っていますが、あなたのwp_optionsテーブルにはまだhomesiteurlがあり、他のものとの間で変更する必要があります。

すべてのデータが新しいドメインに更新されたことを確認するには、次の手順に従ってください。

  1. /に移動してダウンロード 相互接続ITのデータベース検索と置換スクリプトはこちら
  2. ファイルを解凍し、WordPressがインストールされているフォルダ(ルート)を(FTP経由で)ドロップし、フォルダの名前をreplacescreenshot )に変更します。
  3. ブラウザで作成した新しいフォルダに移動し(例:http://www.domain2.com/replace)、 検索/置換ツールが表示されます
  4. ここまでは、一目瞭然です:古いURLをsearch for…フィールドに、新しいURLをreplace with…フィールドに入力してください。

スクリプトを実行する前に、actionsの下にあるdry runボタンをクリックして、何が置き換えられるのかを確認できます。完了したら、/replace/フォルダを必ず削除してください。

あなたのサイトがかなり小さいなら、あなたは….

  1. PhpMyAdminにログインします。
  2. データベースをSQLファイルとしてエクスポートします。
  3. 万が一のためにデータベースのSQLファイルのコピーを作成して、元のデータベースのバックアップを作成します。
  4. データベースエディタのSQLファイルをテキストエディタで開きます。
  5. domain1.comを見つけてdomain2.comに置き換えます。
  6. データベースのSQLファイルを保存します。
  7. PhpMyAdminにログインし直します。
  8. データベースのSQLファイルをインポートします。

EDIT 03/18/2016

上記の手順を完了したら、次の手順に進みます。

ステップ1 - 使用する機能を作成します。

function mbe_migrate_widgets() {

}

ステップ2 - 検索対象と置換対象を指定します。

function mbe_migrate_widgets() {

    $old_domain = 'http://dev.';
    $new_domain = 'http://beta.';

}

ステップ3 - すべてのWordPressウィジェットを取得します。

function mbe_migrate_widgets() {

    $old_domain = 'http://dev.';
    $new_domain = 'http://beta.';

    global $wpdb;

    // Get all Widgets
    $widgets = $wpdb->get_results(
        "
        SELECT `option_id`, `option_name`
        FROM $wpdb->options
        WHERE `option_name`
        LIKE '%widget_%'
        "
    );

}

ステップ4 - すべてのWordPressウィジェットをループ処理して、各ウィジェットの情報を取得します。

function mbe_migrate_widgets() {

    $old_domain = 'http://dev.';
    $new_domain = 'http://beta.';

    global $wpdb;

    // Get all Widgets
    $widgets = $wpdb->get_results(
        "
        SELECT `option_id`, `option_name`
        FROM $wpdb->options
        WHERE `option_name`
        LIKE '%widget_%'
        "
    );

    if ( ! $widgets ) {
        return false;
    }

    $actions = array();

    foreach ( $widgets as $widget ) {

        // Retrieve the Widget data.
        $widget_data = get_option( $widget->option_name );

    }

    return $actions;

}

ステップ5 - ウィジェットデータで検索と置換を実行し、データベースレコードを更新します。

function mbe_migrate_widgets() {

    $old_domain = 'http://dev.';
    $new_domain = 'http://beta.';

    global $wpdb;

    // Get all Widgets
    $widgets = $wpdb->get_results(
        "
        SELECT `option_id`, `option_name`
        FROM $wpdb->options
        WHERE `option_name`
        LIKE '%widget_%'
        "
    );

    if ( ! $widgets ) {
        return false;
    }

    $actions = array();

    foreach ( $widgets as $widget ) {

        // Retrieve the Widget data.
        $widget_data = get_option( $widget->option_name );

        // Update the Widget data changing old domain to new domain.
        $update = update_option(
            $widget->option_name,
            recursive_array_replace( $old_domain, $new_domain, $widget_data )
        );

        if ( $update ) {
            $actions['success'][] = $widget->option_id;
        } else {
            $actions['failed'][] = $widget->option_id;
        }

    }

    return $actions;

}

ステップ6 - カスタム再帰配列置換関数を含める.

// Recursive String Replace - recursive_array_replace(mixed, mixed, array);
function recursive_array_replace( $find, $replace, $array ) {

    if ( ! is_array( $array ) ) {
        return str_replace( $find, $replace, $array );
    }

    $newArray = array();

    foreach ( $array as $key => $value ) {
        $newArray[ $key ] = recursive_array_replace( $find, $replace, $value );
    }

    return $newArray;

}

そこにあります。その関数を一度実行すると、すべてのウィジェットが魔法のように再び機能し始めるはずです。

注: このコードを配置する場所や実行方法は、ユーザーによって異なります。それに応じて、変数$old_domainおよび$new_domainも置き換えてください。

追加の注意事項: また、この例はウィジェットにのみ影響することに注意してください。シリアル化されたデータにURLを含むWebサイトの他の部分がある場合は、それに応じてデータベースクエリを変更してください。 (私はコードのこの部分について話しています:SELECT option_id, option_name FROM $wpdb->options WHERE option_name LIKE '%widget_%'

私はこのトピックに関する私のブログへのリンクを投稿するつもりですが、 "spammy"と表示したくないです。これは本質的に私が 03/18/2016 のように私のウェブサイトで書いた記事からのコピー/ペーストです。この回答の内容は古くなっている可能性があり、私のウェブサイトの記事の内容は将来関連性が増す可能性があります。興味のある方は、私のウェブサイトへのリンクについて私のプロフィールをチェックしてください。

シリアル化されたデータの有用な説明: serialize()された値の解剖学

0
Michael Ecklund