Amazonで商品を見る セール会場へ

WordPress│画像だけ元サイトから参照する方法│All-in-One WP Migration

サイトの移転や複製でプラグインのAll-in-One WP Migrationはよく使われると思います。

しかしサイト全体の容量は画像の数やサイズに比例しますので、下手をすると4GB以上もエクスポートすることも結構あります。

ですので、画像以外をエクスポートすると数百MB程度で収まるので、おすすめです。

しかしそれでは画像を表示できない!という方に、画像だけ元のURLに戻す方法を紹介します。

目次

著者

WEB制作をしているデジタルノマド
WordPressのカスタマイズが好きで、色々と自作しています。

WordPressのカスタマイズに困ったらご相談ください!

画像だけ元サイトから参照する方法

やり方は非常に簡単です、All-in-One WP Migrationのプラグインを使うのと、データベースの文字置換をするだけです。

※テーマによってはカスタマイズが必要です。

STEP

サイトデータをエクスポートする

できるだけ余計なデータを含めないようにデータをエクスポートしましょう。

プラグインはAll-in-One WP Migrationを使用しています。

以下にチェックを入れると、だいぶデータがスリムになります。

  • スパムコメント
  • 投稿リビジョン
  • メディア(画像)
  • 使っていないテーマ
  • 使っていないプラグイン
  • キャッシュ
メディアや使っていないテーマ、プラグイン、キャッシュなどの除外設定を行いデータ容量を削減する場面。

2GB以上あったデータが145MBまで減らせました。

データ容量が2ギガバイト以上から145メガバイトまで削減された状態。
STEP

サイトデータをインポートする

新しいサーバーにAll-in-One WP Migrationを使って先ほどのデータをインポートしましょう。

STEP

画像のパスの修正

通常のテーマであればBetter Search Replaceのプラグインを使って、データベースの文字置換で画像のパスを修正してあげるだけで、画像が表示されます。

新しい画像パスと元々のサイトの画像のパスを入力、あとは画像が格納されているpostmetaとpostsのデータベースを選択して、置換しましょう。

※添付画像はシン・レンタルサーバー for freeのレンタルサーバーをマルチサイト化したサイトに対して文字置換をしてます。

画像パスの入力とデータベースのテーブルを選択して文字置換を実行する設定画面。

以上で、画像だけは元サイトから表示されるのですが、一部のテーマではテーマ独自のカスタマイズの関係で、うまく表示されない場合があります。

その時は後述するカスタマイズを行うと画像が表示されるようになります。

画像の表示を変更するカスタマイズ

データベースの置換だけでは、画像がうまく表示できなかったテーマの一つにSWELLがあります。

異なる画面サイズに対応する複数の画像パスを複数生成しているのですが、この場合データベースの置換だけでは画像が表示されない状態になってしまいます。

<figure class="wp-block-image size-large no-lazyload"><picture>
<source srcset="画像パス" media="(max-width: 960px)">
<img decoding="async" width="1024" height="606" src="画像パス" alt="" class="wp-image-194" srcset="画像パス 1024w, 画像パス 300w, 画像パス 768w, 画像パス 18w, 画像パス 1081w" sizes="(max-width: 1024px) 100vw, 1024px">
</picture></figure>

ですので以下のコードをfunctions.phpに入れてあげると、画像が表示されるようになります。

※functions.phpのコードはCode Snippetsのプラグインで入力すると安全です。

以下のJSのコードは画像のパスを変更するものです。

・var newBaseUrlのところに元のサイトのURL
・img.srcとimg.srcsetのところには新しいサイトの画像のURL

を入力しましょう。

※スラッシュ部分はそのままで英語の名前部分だけ変更

通常のサイトの場合

function motoki_replace_image_path() {
    echo <<<EOM
<script>
document.addEventListener("DOMContentLoaded", function() {
    var images = document.querySelectorAll('img');
    var newBaseUrl = 'https://old-example.com/wp-content/uploads/';

    images.forEach(function(img) {
        if (img.src) {
            img.src = img.src.replace(/https:\/\/new-example\.com\/wp-content\/uploads\//, newBaseUrl);
        }
        if (img.srcset) {
            img.srcset = img.srcset.replace(/https:\/\/new-example\.com\/wp-content\/uploads\//g, newBaseUrl);
        }
    });
});
</script>
EOM;
}
add_action('wp_footer', 'motoki_replace_image_path');

マルチサイトの場合

function motoki_replace_image_path() {
echo <<< EOM
<script>
document.addEventListener("DOMContentLoaded", function() {
    var images = document.querySelectorAll('img');
    var newBaseUrl = 'https://old-example.com/wp-content/uploads/';

    images.forEach(function(img) {
        if (img.src) {
            img.src = img.src.replace(/https:\/\/new-example\.com\/wp-content\/uploads\/sites\/3\//, newBaseUrl);
        }
        if (img.srcset) {
            img.srcset = img.srcset.replace(/https:\/\/new-example\.com\/wp-content\/uploads\/sites\/3\//g, newBaseUrl);
        }
    });
});
</script>
EOM;
}
add_action('wp_footer', 'motoki_replace_image_path');
  • URLをコピーしました!

実装を任せたい方へ

WordPressのカスタマイズ代行

ブロックの追加、テーマの改修、管理画面の調整など、記事で紹介している内容の実装を承ります。1時間 ¥8,000〜(税込)。

WAZAの有料記事のサブスクリプションも開始しました。

サービス

Service

WordPressサイトのカスタマイズのサービスに関心がありましたら、ぜひ詳細をご覧ください。

目次