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; ?>
エスケープは有効なHTMLまたは他のフォーマットを生成するために使用され、それは文脈に依存します。
「&」の文字を&に置き換えるには、<a href="<?php echo $url?>"....
のようにURLをエスケープする必要があります(ただし、そうしないと、ブラウザで修正される可能性があります)。
<input value="<?php echo $url?>"...
のような入力要素でURLをエスケープするには、 "&"を置き換える必要はありませんが、引用符を置き換える必要はありません。
したがって、一般的に、エスケープは状況依存型なので、WordPress APIはそれを回避しないと想定できます。プラグインが行うことは、プラグイン自体次第です。