web-dev-qa-db-ja.com

ローカルインストールでライブイメージを使用する方法

ローカルWPインストールでライブイメージを使用する方法wp-config.phpの下のコードのようなことをしたいのです。問題はsiteurlは相対パスでなければならず、urlにはできないということです。私はいくつかの部分をオフラインでテストして画像を見せる必要があるようにローカル環境を設定したいと思います。

if ($_SERVER['SERVER_ADMIN'] == 'dev') {
  define('WP_HOME','http://localhost/siteurl.com/public_html/');
  define('WP_SITEURL','http://localhost/siteurl.com/public_html/');
  // use live images
  define( 'UPLOADS', 'http://siteurl.com/wp-content/uploads/' );
}
4

次のコードを使用して、一時的に出力URLをフィルタリングしてオンライン画像に置き換えます。

add_filter( 'wp_get_attachment_image_src', function ( $image, $attachment_id, $size ) {

    // For thumbnails
    if ( $size ) {
        switch ( $size ) {
            case 'thumbnail':
            case 'medium':
            case 'medium-large':
            case 'large':
                $image[0] = str_replace( 'localhost/', 'EXAMPLE.COM/', $image[0] );
                break;
            default:
                break;
        }
    } else {
        $image[0] = str_replace( 'localhost/', 'EXAMPLE.COM/', $image[0] );
    }
    return $image;
}, 10, 3 );

これはlocalhostを含む文字列をあなたのオンラインドメインの名前に置き換えます。ただし、画像の修正や変更はできません。開発目的でURLを修正するためだけのものです。

ドメイン名の前にhttp://または/を付けずにドメイン名を使用する必要があることに注意してください。

あなたがそれを終えた後あなたのテーマのfunctions.phpからこの関数を削除してください。

0
Jack Johansson

そのための最善の方法はURL Rewritesを使うことです。

こうすれば、CODEをサーバーにアップロードし直す前に何も変更する必要はありません。 .htaccessファイルで次のコードを試してください。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# custom rules for loading server images or any other uploaded media files
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_Host} ^localhost$
RewriteRule ^.*/uploads/(.*)$ http://siteurl.com/wp-content/uploads/$1 [L,R=301,NC]

# default WordPress rules
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

上記のコードに従ってライブドメインをsiteurl.comに調整してください。そうすれば、あなたがlocalhostから開発するときにあなたのサーバーイメージがロードされます。

また、次の行でRewriteCond %{REQUEST_FILENAME} !-fを指定すると、Webサーバーは最初にイメージがlocalhostで使用可能かどうか(まったく同じ名前で)確認し、ローカルで使用可能でない場合にのみサーバーからロードします。同じイメージがローカルに存在していてもサーバーイメージをロードしたい場合は、その行を削除してください。

8
Scott