固定ページでpictureタグにハマった件
例えばこんなケースがある!
固定ページでpictureタグのsource srcset属性のショートコードが‥
あれ!!ショートコードが展開されない??
<前提として>
下記のようなショートコードがfunctions.phpなどにあると仮定する。
//ショートコード()呼び出し[ sc_tempDirUri ]
function template_directory_uri__shortcode() {
return get_template_directory_uri();
}
add_shortcode('sc_tempDirUri', 'template_directory_uri__shortcode');
<実装方法>
※そのまま書くとショートコードが展開されるため
シンタックスハイライト上では[ sc_tempDirUri ]に半角スペースを付けている。
NGな書き方
<picture>
<source srcset="[ sc_tempDirUri ]/img_custom/orderprocessSP.webp" media="(max-width:768px)">
<img src="[ sc_tempDirUri ]/img_custom/orderprocessPC.webp" width="1708" height="1427" class="w100" alt="">
</picture>
OKな書き方
sourceタグのsrcset属性にショートコード書いても展開されないため、パスを書くしかない。
<picture>
<source srcset="/wp/wp-content/themes/wp1stop2024/img_custom/orderprocessSP.webp" media="(max-width:768px)">
<img src="[ sc_tempDirUri ]/img_custom/orderprocessPC.webp" width="1708" height="1427" class="w100" alt="">
</picture>
<まとめ>
【結論】WordPressでpictureタグのsource srcsetにショートコードを使ってはいけない。
固定ページ上ではsource srcsetにはパスを書くしかないようである。
環境:WordPress 6.7.1
WordPressのテーマphpでショートコードを呼び出した場合は問題ない。
<picture>
<source srcset="<?php echo do_shortcode('[ sc_tempDirUri ]'); ?>/img_custom/orderprocessSP.webp" media="(max-width:768px)">
<img src="<?php echo do_shortcode('[ sc_tempDirUri ]'); ?>/img_custom/orderprocessPC.webp" width="1708" height="1427" class="w100" alt="">
</picture>