LoginSignup
0
1

More than 1 year has passed since last update.

「WP Offload Media Lite」で開発時と本番時でドメインが異なると挙動がおかしくなる

Last updated at Posted at 2021-10-22

WP Offload Media Liteとは

WordPressの画像やビデオ、ドキュメント類をAmazon S3にアップロードして、Amazon CloudFrontなどで配信させることができるWordpressのプラグイン

問題

ウェブサイトをリニューアルする際などに本番のドメインは使えないためサブドメインなどを作って、開発する要件があった。
開発環境のWordpressで画像つきの記事を登録し、本番環境に移行すると画像が表示されないという現象が起こった。

スクリーンショット 2021-10-22 14.45.04.png

本来であれば、このプラグインを使用するとS3に画像がアップロードされ、画像のパスは下記のように出力されていてほしい

https://[s3 bucket名].s3.ap-northeast-1.amazonaws.com/wp-content/uploads/yyyy/mm/******/image.png

だが本番に移行すると

https://[開発環境のドメイン]/wp-content/uploads/yyyy/mm/******/image.png

となっていた。

原因

「記事登録したときのドメイン」と「記事表示しているドメイン」を比較しているため

下記はプラグインがドメインを比較しているところ。

amazon-s3-and-cloudfront.php
    /**
     * Ensure local URL is correct for multisite's non-primary subsites.
     *
     * @param string $url
     *
     * @return string
     */
    public function maybe_fix_local_subsite_url( $url ) {
        $siteurl = trailingslashit( get_option( 'siteurl' ) );      

        if ( is_multisite() && ! $this->is_current_blog( get_current_blog_id() ) && 0 !== strpos( $url, $siteurl ) ) {
            // Replace original URL with subsite's current URL.
            $orig_siteurl = trailingslashit( apply_filters( 'as3cf_get_orig_siteurl', network_site_url() ) );
            $url          = str_replace( $orig_siteurl, $siteurl, $url );
        }

        return $url;
    }

DB登録されている画像のパスはS3ではなく、登録した際のドメインのパスで登録されていた。

このプラグインはDB登録のパス(記事本文に入っている画像のパス)と設定の「サイトアドレス」を比較しているらしく
一致しないとS3のパスに書き換えてくれないようです。
スクリーンショット 2021-10-22 14.14.19.png

解決方法

本番移行時に手作業でドメインを書き換える方法なども考えることができたが
数が多い場合にはエクスポートするなどして、インポートする際に一括置換で書き換える方法をとった。

$path = str_replace('http://[移行前のドメイン]/wp-content/uploads', 'https://[移行後のドメイン]/wp-content/uploads', $path);

SQLのdumpをとって、置換もいいかも。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1