WEBサイト制作・アプリ開発・システム開発・ブランディングデザイン制作に関するご相談はお気軽にご連絡ください。
構想段階からじっくりとヒアリングし、お客様の課題にあわせたアプローチ手法でお客様の“欲しかった”をカタチにしてご提案いたします。
Blog スタッフブログ
WEB制作
[WordPress]srcset属性でショートコードを実行する方法
WordPressで画像をレスポンシブに表示する際、<picture>
タグやsrcset
属性を使うことで、デバイスごとに最適な画像を読み込むことができます。
管理画面の固定ページのカスタムHTMLでは、テーマフォルダの画像パスをショートコードで指定しても、srcset
などの属性内では展開されないという問題に直面することがあります。
そのような時、srcset
属性でショートコードを使えるようにする方法をご紹介します。
使用例
function shortcode_templateurl(){
return get_bloginfo('template_url');
}
add_shortcode('template_url', 'shortcode_templateurl');
これはテーマフォルダのパスを取得するショートコードです。
カスタムHTMLで使用するには以下のような書き方をします。
<picture>
<source srcset="https://mixltd.jp/cms/wp-content/themes/mix_theme/image.jpg" media="(min-width: 768px)" type="image/jpg">
<img src="https://mixltd.jp/cms/wp-content/themes/mix_theme/image_sp.jpg" alt="画像">
</picture>
実際のページではsrcset属性の方のショートコードがそのまま文字列として表示されます。
これはWordPressによりsrcset属性に展開が制限されているためです。
functions.phpに展開を許可する処理を追加することで解決します。
functions.phpに追加
このようにsrcset属性でも展開する処理を追加します。
function shortcode_source($allowedposttags) {
$allowedposttags['source']['srcset'] = true;
return $allowedposttags;
}
add_filter('wp_kses_allowed_html', 'shortcode_source', 10, 1);
$allowedposttagsでsrcset属性を指定します。