WordPressで記事の中に画像を挿入するとき、通常ではhttp://www.example.com/wp-content/uploads/~ などといったように、ドメインを含んだアドレスがimgタグのsrcとして埋め込まれてしまいます。
例えば、ローカル環境や構築環境で作ったサイトを、本番用のドメインで公開する場合、このドメイン部分をいちいち置換しなくてはなりません。
MySQLが分かる方であれば、一括置換すれば済む話ではありますが、データベースってなんじゃらほいという方はどうすればいいのか困りますよね。そこで、挿入される画像のsrcにドメイン部分が入らないようにする方法を紹介します。
利用しているテーマのfunctions.phpに下記コードを追加するだけ。
CODE 1
function delete_host_from_attachment_url( $url ) { $regex = '/^http(s)?:\/\/[^\/\s]+(.*)$/'; if ( preg_match( $regex, $url, $m ) ) { $url = $m[2]; } return $url; } add_filter( 'wp_get_attachment_url', 'delete_host_from_attachment_url' );
追加すると、ファイルのリンクURLから、ドメイン部分が消えています。
この画像のソースも
<img src="/wp-content/uploads/2010/11/linkurl.png" alt="" title="linkurl" width="624" height="82" class="alignnone size-full wp-image-41" />
この通り。
ちなみに画像の投稿URLにドメインを入れないようにするには、CODE 1に加えて、下記1行をfunctions.phpに追加すればよいです。
CODE 2
add_filter( 'attachment_link', 'delete_host_from_attachment_url' );
これを活用させていただきました。ありがとうございました!その後、メディアライブラリに画像が表示されなくなってしまい、投稿者が分かりにくいとのことで、またはずしました。
メディアライブラリに画像が無くても、大丈夫な人は良いかもしれないですね~