0

In Wordpress, how do you filter a textarea that saves a vimeo embed code in theme admin? Using sanitize_text_field will make the code unusable when saving into db via update_post_meta.

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

2 回答 2

0

我建议您将视频的 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将 textarea 列入白名单并对其进行清理。wp_kses()

于 2014-04-10T10:53:31.277 回答
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;?>
于 2013-07-03T15:04:05.163 回答