状況を把握するために、TimberとTwigにバンドルされているWordPressでGantryを使用しています。
私はこのコードを持っています、基本的な、make-your-text-bold
shortcode
// Add Shortcode
function bold_text_shortcode( $atts , $content = null ) {
return '<strong>' . $content . '</strong>';
}
add_shortcode( 'b', 'bold_text_shortcode' );
小枝の中で
{% filter shortcodes %}
[b] bold text [/b]
{% endfilter %}
期待される結果は 太字のテキスト になりますね。
またはHTML用語で
<strong>bold text</strong>
しかし私が得ているのは
<strong> bold text </strong>
私は ワードプレスコーデックスのショートコードを読んだ 、 木材のショートコードの使い方 、 小枝のエスケープ
html_entity_decode("<code>foo and bar@!</code>");
htmlentities("<code>foo and bar@!</code>");
そして 両方の組み合わせ 、しかしサイコロではない。
私は私の機知にとどまっています。脱出がどこで起こっているのか私にはわかりません。これを説明しました。任意の助けは大歓迎です。
HTMLを含める場合は一重引用符を使用することをお勧めします。それ以外の場合は何も返さない必要があります。
// WP Shortcode
function text_shortcode() {
return '<strong>bold text:</strong> <a href="https://wordpress.stackexchange.com/questions/318934/shortcode-returns-escaped-html-tags">See wordpress.stackexchange.com</a>';
}
add_shortcode('bold-text', 'text_shortcode');
あなたのWordPressのショートコードは次のようになります。
[bold-text]
編集: あなたがhtml_entity_decode
やhtmlentities
を必要としないのは、非常に複雑なことをしているときや、HTMLを出力したいときだけです。
Escaper Extension Twig
あなたはTwigを使っているので、どこかでエスケープモードを有効にしたかどうかをチェックする必要があります。
エスケープエクステンション
Escaperエクステンションは自動出力をTwigにエスケープします。タグautoescapeとフィルタrawを定義します。
エスケープ拡張子を作成するときに、グローバル出力エスケープ戦略をオンまたはオフに切り替えることができます。$escaper = new Twig_Extension_Escaper('html'); $twig->addExtension($escaper);
htmlに設定すると、生のフィルタを使用するものを除いて、テンプレート内のすべての変数は(htmlエスケープ戦略を使用して)エスケープされます。
{{ article.to_html|raw }}
autoescapeタグを使ってローカルでエスケープモードを変更することもできます。{% autoescape 'html' %} {{ var }} {{ var|raw }} {# var won't be escaped #} {{ var|escape }} {# var won't be double-escaped #} {% endautoescape %}
私と一緒にしてください、私は小枝を使いません、それで私はこれについてあなたを導くことしかできませんでした。だから、あなたの場合あなたはこのようなことをする必要があるでしょう:
{% autoescape %}
{% set hello = '<strong>Hello</strong>' %}
{% set hola = '<strong>Hola</strong>' %}
{{ false ? '<strong>Hola</strong>' : hello|raw }}
does not render the same as
{{ false ? hola : hello|raw }}
but renders the same as
{{ (false ? hola : hello)|raw }}
{% endautoescape %}
編集2:
下記のquote WP PHPコーディング標準も参照してください。リンク: https://make.wordpress.org/core/handbook/best-practices/codingも参照してください。標準/ php/
一重引用符と二重引用符
一重引用符と二重引用符適切な場合は、一重引用符と二重引用符を使用してください。文字列内の何も評価しない場合は、一重引用符を使用してください。あなたは、文字列の中の引用符をエスケープする必要はほとんどないはずです。なぜなら、引用スタイルを変えることができるからです。
echo '<a href="/static/link" title="Yeah yeah!">Link name</a>'; echo "<a href='$link' title='$linktitle'>$linkname</a>";
一重引用符または二重引用符が属性値を終了させず、HTMLを無効にしてセキュリティー上の問題を引き起こすことがないように、属性に入るテキストは
esc_attr()
を介して実行する必要があります。詳細については、コーデックスのデータ検証を参照してください。