web-dev-qa-db-ja.com

エスケープ内蔵 WP 関数戻り文字列

get_permalink()のような組み込みのWP関数や、get_field()のようなACF(Advanced Custom Fields)のようなよく知られたWPプラグインの出力をフィルタすべきですか?

例えばget_permalink()home_url()を呼び出すget_home_url()を呼び出します。どれもデータのフィルタリングを行いません。同様の方法で、the_content()the_title()、およびその他のよく知られているループ関連の関数を処理します。

したがって、以下で十分でしょうか。 (いいえWPおよびACF関数のesc_attr()

<?php while ($wp_query->have_posts() && __return_true($wp_query->the_post()) ) : ?>
    <a href="<?=get_the_permalink()?>">
        <img src="<?=get_field('homepage_thumbnail')['sizes']['thumbnail']?>" />
    </a>
<?php endwhile; ?>

それとも、私はプラグインから来るデータにもっと注意を払うべきですか? (注意esc_attr()がACF画像ソースに追加されました、3行目

<?php while ($wp_query->have_posts() && __return_true($wp_query->the_post()) ) : ?>
    <a href="<?=get_the_permalink()?>">
        <img src="<?=esc_attr(get_field('homepage_thumbnail')['sizes']['thumbnail']?>)" />
    </a>
<?php endwhile; ?>

それとも、stock WP関数を使ったとしても、私は非常に慎重になるべきですか? (注意esc_attr()がWP anchor hrefに追加されました、2行​​目

<?php while ($wp_query->have_posts() && __return_true($wp_query->the_post()) ) : ?>
    <a href="<?=esc_attr(get_the_permalink())?>">
        <img src="<?=esc_attr(get_field('homepage_thumbnail')['sizes']['thumbnail']?>)" />
    </a>
<?php endwhile; ?>
3
dotancohen

エスケープは有効なHTMLまたは他のフォーマットを生成するために使用され、それは文脈に依存します。

「&」の文字を&に置き換えるには、<a href="<?php echo $url?>"....のようにURLをエスケープする必要があります(ただし、そうしないと、ブラウザで修正される可能性があります)。

<input value="<?php echo $url?>"...のような入力要素でURLをエスケープするには、 "&"を置き換える必要はありませんが、引用符を置き換える必要はありません。

したがって、一般的に、エスケープは状況依存型なので、WordPress APIはそれを回避しないと想定できます。プラグインが行うことは、プラグイン自体次第です。

1
Mark Kaplun

その起源が何であれ、あなたは常にあなたのデータをエスケープするべきです。あなたの例では、URLは esc_url() を使ってエスケープするべきです。

WordPressにはたくさんの機能があります。利用可能なさまざまな機能をリストしたCodexに関する データ検証 に関する記事があります。

3
RRikesh