在Wordpress中,如何过滤在主题管理中保存vimeo嵌入代码的文本区域?当通过update_post_meta将代码保存到数据库中时,使用sance_text_field将使代码不可用。
$postmeta = sanitize_text_field( $_POST['embed_video']);
update_post_meta($post_id, 'embed_video',$postmeta );
我经常从另一个角度处理wordpress视频嵌入,例如在模板中创建嵌入代码,而不是让某人嵌入这样的视频:
<iframe src="http://player.vimeo.com/video/69277800?title=0&byline=0&portrait=0&badge=0" width="577" height="325" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>
我会让他们插入id,在这种情况下是69277800。然后我会把我的模板
<?php if(!empty($video_id)):?>
<iframe src="http://player.vimeo.com/video/<?php echo $video_id;?>?title=0&byline=0&portrait=0&badge=0" width="577" height="325" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>
<?php endif;?>
我建议您将视频的URL保存在文本输入中(继续使用sanitize_text_field()
),然后使用WordPress的wp_get_oembed()
功能输出嵌入代码。这将适用于各种允许的提供商,如Youtube和Vimeo。只要你使用的是允许的提供商,这种方法就更安全,我相信你可以将提供商添加到白名单中,这样你就不可能使用一个非常模糊的人。
$input = get_post_meta( $post->ID, '_my_meta_input', true );
echo wp_oembed_get( $input );
此外,您可以将iframe
列入白名单,并使用wp_kses()
对文本区域进行消毒,如我在这里的回答所示。