あかつかゆうこのブログ フリーランスWEBクリエイター系女子 イラストレーター

WordPress srcset内のショートコードがそのまま表示されてしまう現象を解決!


こんにちは!ゆうこ(@chibiyuko_0124)です!
WordPressの固定ページで超絶便利なsrcsetを使ってみたところ、ショートコードがそのまんま表示されるという事象に遭遇してしまいました!
検索しまくって無事に解決したのでその方法をここに記します◎

現象の詳細

WorPpressの固定ページにはphpが書けないので、funstions.phpでショートコードを作成しなければなりません。
なので、テンプレートディレクトリを指定できるように下記のようなショートコードを作成したのです。

★functions.phpにカキカキ

function templateDirectory() {
  return get_template_directory_uri();
}
add_shortcode('template', 'templateDirectory');

★固定ページにこう書いた

<img src="[template]/images/sample.png" srcset="[template]/images/sample@2x.png 2x">

ページに反映すれば
[template]が
http://ブログURL/wp-content/themes/テーマ名/
として出力されるはずなのですが
srcsetだけなぜかそのまま[template]で出てきてしまうのです!!

解決方法

こちらの記述をfunctions.phpに追記して無事に解決しました。

add_filter( 'wp_kses_allowed_html', 'my_wp_kses_allowed_html', 10, 2 );
function my_wp_kses_allowed_html( $tags, $context ) {
	$tags['img']['srcset'] = true;
	return $tags;
}

valueやinputなど、他にもおんなじ現象が起こるものがあったりするのでそのときはオレンジの部分を変えてみてください!

原因・参考ページ

バージョン4.2.3からのクロスサイトスクリプティング脆弱性によるもので、一部の要素や属性でショートコードを使用できなくしたみたいです。
WordPressのフォーラムを元に無事に解決できました!
ありがとうございましたっ!

★参考トピックス
[解決済み] バージョンが4.2.3になると、inputのvalueにショートコードが使えない

Related Posts

ページトップへもどる