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" />

参考URL:
http://rakuishi.com/archives/6094
http://www.warna.info/archives/20/