Wordpress-过滤视频嵌入代码


Wordpress - filter video embed code

在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&amp;byline=0&amp;portrait=0&amp;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&amp;byline=0&amp;portrait=0&amp;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()对文本区域进行消毒,如我在这里的回答所示。