WordPress でアップロードした画像 (thumbnail) を img タグで取得する the_post_thumbnail()
には自動的に width
, height
属性がついてくるので場合によっては使いづらいときがあります。
1. post_thumbnail_html
フィルターで the_post_thumbnail
の出力内容を置き換える
<?php // functions.php add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions'); function remove_thumbnail_dimensions( $html, $post_id, $post_image_id, $size, $att ) { $html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html ); return $html; }
cf. How do you remove hard coded thumbnail image dimensions? - WordPress Development Stack Exchange
常に width
, height
属性が不要であれば filter を使うのが手っ取り早そうです
2. wp_get_attachment_image_src
を使って画像の URL を取得する
img タグを自分で作ってしまうなら画像の URL が取得できれば問題がない
wp_get_attachment_image_src( int $attachment_id, string|int[] $size = 'thumbnail', bool $icon = false ): array|false
cf. wp_get_attachment_image_src() | Function | WordPress Developer Resources
サムネイルの attachment_id
は get_post_thumbnail_id(int|WP_Post $post = null): int|false
で取得できる
<?php $thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), $size ); $thumbnail = $thumbnail[0] ?: 'placeholder.jpg'; $title = get_the_title( $post->ID ); echo '<img src="' . $thumbnail . '" alt="' . esc_attr($title) . '" />';
画像の URL を取得してしまえばタグは自由にできますね!
おわり
WordPress のこと本当に何も覚えてない…
[参考]
2030年:すべてが「加速」する世界に備えよ 面白かったです!