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フィルターの仕様
引数名 | 型 | 説明 |
---|---|---|
$html | string | imgタグ |
$id | int | 画像の添付ID |
$alt | string | 画像の説明文(alt属性) |
$title | string | 画像の説明タイトル(title属性) |
$align | string | 画像の配置 |
$size | string | 画像のサイズ |
- $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属性を削除するフィルターフックを作ってみました。
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フィルターを使ってフィルターフックを作っておけば、記事編集で無駄な作業が減るのでオススメです。