WordPressでメディア追加するときのHTMLのクラス属性を変更するにてWordPressでメディアを追加したときに使われるget_image_tag_classフィルターについて紹介しました。get_image_tag_classフィルターは、メディアのimgタグのクラス属性を変更できるフィルターでしたね。imgタグのクラス属性だけではなくimgタグそのものを変更したい場合には、get_image_tagフィルターというものを使います。今回はメディア関連のフィルターで画像のimgタグを変更できるget_image_tagフィルターについて紹介します。

get_image_tagフィルターは、WordPressで用意されているメディアのフィルターフックで同名のget_image_tag()関数内で呼ばれます。get_image_tag()で生成されたimgタグをget_image_tagフィルターで加工したりすることができます。get_image_tagフィルターの仕様は、以下の通りです。

get_image_tagフィルターの仕様

引数名説明
$htmlstringimgタグ
$idint画像の添付ID
$altstring画像の説明文(alt属性)
$titlestring画像の説明タイトル(title属性)
$alignstring画像の配置
$sizestring画像のサイズ
  • $htmlは、get_image_tag()で生成されたimgタグです。
  • $idは、挿入する画像の添付ファイルIDになります。添付ファイルIDは、wp_postsテーブルのIDです。
  • $altは、画像の説明文でimgタグのalt属性に使われます。
  • $titleは、画像のタイトルでimgタグのtitle属性に使われます。
  • $alignは、画像を追加するときに「配置」で挿入位置を指定できますが、指定した配置の挿入位置のクラス名が入っています。
  • $sizeは、$alignと同じように画像を追加するときの「サイズ」画像をサイズを指定できますが、指定した画像サイズのキーが入っています。画像にもよりますが、WordPressの標準だと$sizeは、thmubnailやmediumやlargeといったものが入っています。
画像の挿入

get_image_tagフィルターの使いドコロ

get_image_tagフィルターは、get_image_tag_classフィルターでは、カバー出来ないところまでカバーするところにあります。get_image_tag_classフィルターでは、imgタグのクラス属性しか変更することが出来ませんが、get_image_tagフィルターではimgタグそのものを加工するので属性の追加・削除やimgタグそのものを生成しなおすといったことも出来ます。

サンプルとしてget_image_tagフィルターを使ってget_image_tag()で生成されたimgタグのwidth属性・height属性を削除するフィルターフックを作ってみました。

get_image_tagのサンプル
function sample_image_tag($html) {
    return preg_replace( '/(height|width)="\d*"\s/', "", $html );
}
add_fileter('get_image_tag', 'sample_image_tag');

まとめ

get_image_tagフィルターは、get_image_tag()で生成されたimgタグを加工するのに使うフィルターフックです。get_image_tag()は、引数の指定が多くてWordPressのテーマ開発においてほとんどありません。

実際にget_image_tag()が使われるのが記事の編集でメディアを追加したときです。「メディアの追加」で追加したimgタグはget_image_tag()で生成したものです。記事の編集でメディアの追加で追加したimgタグを毎回編集していた場合は、get_image_tagフィルターを使ってフィルターフックを作っておけば、記事編集で無駄な作業が減るのでオススメです。