Wordpress - 过滤视频嵌入代码

时间:2013-07-03 14:11:56

标签: php wordpress

在Wordpress中,如何过滤在主题管理中保存vimeo嵌入代码的textarea?使用sanitize_text_field会在通过update_post_meta保存到db时使代码无法使用。

    $postmeta = sanitize_text_field( $_POST['embed_video']);
    update_post_meta($post_id, 'embed_video',$postmeta );

2 个答案:

答案 0 :(得分:0)

我经常从另一个角度处理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;?>

答案 1 :(得分:0)

我建议您将视频的网址保存在文字输入中(继续使用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()清理文本区域,如我的回答here所示。