タイトルの通りなのですが、Wordpressの記事を、「ビジュアル」ではなく「テキスト」編集中、divタグ内のstyle要素でショートコードが展開しません。
functions.php内
php
1//親テーマ 2add_shortcode('turl', 'shortcode_turl'); 3function shortcode_turl() 4{ 5 return get_template_directory_uri(); 6}
とした上で、
html
1<div style="background-image: url('[turl]/img/xxx.jpg');">テスト</div>
と入力すると、ソースコードにそのまま「[turl]」の文字が出力されてしまいます。
ありえないソースコードですが、以下の場合は普通に展開されます。
html
1<div style="color: [turl];">テスト</div>
むき身で書いたこの場合は展開されません。
html
1<div style="[turl];">テスト</div>
以前、Wordpressのアップデートでクロスサイトスクリプティングの脆弱性を防ぐために、あちこちでショートコードが使えなくなったので、そのエスケープ方法でfunctions.phpに
php
1add_filter('wp_kses_allowed_html', 'my_wp_kses_allowed_html', 10, 2); 2function my_wp_kses_allowed_html( $tags, $context ) 3{ 4 $tags["div"]["style"] = true; 5 return $tags; 6}
を加えましたが、style内では展開できませんでした。
おそらくはそのstyleの中でも要素ごとにチェックが効いているのだと思いますが、どなたかそのチェックをエスケープする方法をご存知でしたら教えてください。
2018/09/19 追記
現状ではどうにもならなそうなので、ユーザ側でdivのバックグラウンド画像をテンプレートURLから指定したいという特殊な場合は、素直にテンプレートまでのURLを打ち込んでもらうことにしました。
ただ、エスケープ方法があるなら未だ教えていただきたいので、質問の方は締め切らず置いておこうと思います。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/18 00:14