2016-10-07 7 views
0

私はACFワードプレスプラグインを使用してoEmbedフィールドを作成しています。フィールドはVimeoからのURLを受け取り、フロントエンドにiframeを出力します。ワードプレスACF OEmbedのesc_url

私は通常のURLをエスケープし、そうのように私のテーマの中に属性:私がしようとすると

<a href="<?= esc_url(get_field('link')); ?>" title="<?= esc_attr(get_field('title')); ?>"> 

とのoEmbedを逃れ、何も現れません:

<?= esc_url(get_field('video')); ?> 

私は以下のスクリプトでXSSをテストする場合ACFフィールドはJSエラーで完全に壊れます。

<script>alert('hello')</script> 

このフィールドをエスケープする必要がありますか?私はWordPressがoEmbed関数を介してエスケープすることを担当していると思いますか?

+0

明確にするために、esc_url()関数を削除すると、URLが正しく出力されますか? –

+0

はい、フィールドはiframeを吐き出し、ビデオを正しく表示します。 – Squideyes

答えて

0

のoEmbedフィールドは、埋め込みHTMLを含む文字列を返します。

入力がURL型の場合でも、値を取得すると、ACFは完全なHTML埋め込みコードに変換します。結論として、esc_urlをこのHTMLに呼び出すことは間違いです。the_field('video')またはecho get_field('video')を使用するだけです。

oEmbedタイプの入力で無効な(URLではない)データを受け入れるACFについては、必要に応じてフィルタを実装してエラーを発生させるカスタムバリデーターを書き込むことができます。acf/validate_value

0

get_field()の代わりにthe_field()を使ってみましたか?

oEmbedは実際には単なるURL以上のものを返しますので、問題でもあります。私は過去にesc_url()を使っていませんでしたが、何が通過するのかはURLだけではないので、壊れている可能性があります。

ここで述べたように、https://www.advancedcustomfields.com/resources/oembed/は、 "oEmbedフィールドは埋め込みHTMLを含む文字列を返します"。公式documentationから

+0

! 'the_field( 'video')')は 'the_field( 'video')と同じです。エコーNULL; –

関連する問題