rakuishi.com

[WordPress] 画像を記事に挿入する際に <a> タグを削除する

WordPress の標準の画像挿入(メディアを追加)では、<img> タグは、<a> タグで囲われる仕様になっています。

個人的にこの仕様が気に食わないので、MarsEdit というエディタアプリで画像の囲われ方をカスタムし投稿していたのですが、投稿画面の挿入の指定がカスタムできるみたいなので <a> タグを削除するようにしてみました。

画像を記事に挿入する際に、<a> タグを削除する

WordPress の「メディアを追加」で吐き出されるコードは以下になります。こちらから <a> タグを削除するのが目標です。

<a href="http://rakuishi.com/wp-content/uploads/2013/08/wordpress.png"
  ><img
    src="/images/2013/08/wordpress.png"
    alt="wordpress"
    width="200"
    height="200"
    class="align-center size-full wp-image-6064"
/></a>

image_send_to_editor という関数が画像の挿入時に呼ばれるみたいなので、この関数にフィルターフックします。テーマファイルの functions.php に、以下の内容を記述します。

function remove_a_tag_image_send_to_editor($html, $id, $caption, $title, $align, $url, $size) {
  return strip_tags($html, '<img>');
}
add_filter('image_send_to_editor', 'remove_a_tag_image_send_to_editor', 10, 7);

strip_tags 関数は、指定したタグ以外を削除する関数です。これで <a> タグを取り除くことができます。「メディアを追加」すると以下のように <img> タグだけのコードが出力されます。

<img
  src="/images/2013/08/wordpress.png"
  alt="wordpress"
  width="200"
  height="200"
  class="align-center size-full wp-image-6064"
/>

image_send_to_editor にフィルターフックすることで、指定のクラスを追加したりもできそうですね。