2014-07-02

WordPressの画像挿入処理を変更する

WordPressで画像を挿入しようとするとこんな感じになりますね。

<a href="http://note.crohaco.net/wp-content/uploads/2014/07/wp-light-hi-bg.png"> <img class="alignnone size-full wp-image-208" src="http://note.crohaco.net/wp-content/uploads/2014/07/wp-light-hi-bg.png" alt="wp-light-hi-bg" width="176" height="145" /> </a>

この仕様の欠点

aタグでコーティングされる点

当サイトでは画像へのリンクは必要ありません。 aタグをストリップします。

画像ソースにホスト(ドメイン)が含まれる点

環境が変わると画像が表示されなくなる恐れがあります。

今回はパス表記に変更します。

修正方法

以下のコードを functions.php に追記します。

//aタグをストリップするコード function strip_atag_from_image($html, $id, $caption, $title, $align, $url, $size) { return strip_tags($html, '<img>'); } add_filter('image_send_to_editor', 'strip_atag_from_image', 10, 7);
//画像ソースをパスのみに変更するコード function delete_host_from_attachment_url($url) { $regex = '/^https?:\/\/[^\/\s]+(.*)$/'; if (preg_match( $regex, $url, $m) ) { $url = $m[1]; } return $url; } add_filter('wp_get_attachment_url', 'delete_host_from_attachment_url');

余分なものが消えました。

<img class="alignnone size-full wp-image-208" src="/wp-content/uploads/2014/07/wp-light-hi-bg.png" alt="wp-light-hi-bg" width="176" height="145" />

参考

[WordPress] 画像を記事に挿入する際に <a> タグを削除する | rakuishi.comWordPress の標準の画像挿入(メディアを追加)では、&lt;img&gt; タグは、&lt;a&gt; タグで囲われる仕様になっています。http://rakuishi.com/archives/6094 WordPressで挿入する画像のsrcを相対リンクにするWordPressで記事の中に画像を挿入するとき、通常ではhttp://www.example.com/wp-content/uploads/~ などといったように、ドメインを含んだアドレスがimgタグのsrcとして埋め込まれてしまいます。https://www.warna.info/archives/20/