WP で rel=“attachment wp-att-*” を削除して挿入しない
WordPress で、本文にリンク付きの画像などを挿入するとき、その a 要素に rel="attachment wp-att-*ID"
属性が挿入される問題があります。
WordPress としてはこの rel 属性情報を推奨したいのでしょうが、この属性情報は、W3C の定める rel 属性 (特に HTML5~x ) の規約に違反します。 したがって、この情報を削除したいという人は多いと思います。
手動ではなく自動で削除する
画像の挿入の度に手動で削除指定も良いのですが、それは「テキスト」編集を利用している人しかできません。 また画像の挿入の度にそんなことをしていては、肝心の本文を書く時間が削られてしまいます。できるだけ自動するに越したことはありません。
WordPress ではおあつらえ向きに、image_send_to_editor
フィルタが用意されています。このフィルタにフックし、
画像の挿入に必要なテキストを編集して、編集済みのテキストを返せば良いです。
今回は rel 属性を削除したいので、次のようなコードになりますが、例えば class 情報を編集したい場合にも同じフィルタが使えます。
function format_media_html($html, $id)
{
$html = preg_replace('/\s*rel="attachment\s*wp-att-' . $id . '"\s*/', '', $html);
return $html;
}
add_filter('image_send_to_editor', 'format_media_html', 10, 2);
正規表現を使って不要な rel 属性情報を削除し、編集済みのテキスト(HTML)を返しています。
実際のところ、正規表現を使わなくても削除することはできるのですが、将来的な仕様の変更に備え、正規表現を採用しました。 正規表現を使うほうが、完全一致の文字列置換と比較して処理コストが大きいですが、編集時にしか機能しない処理ですので、問題になりません。