【问题标题】:Wordpress - filter video embed codeWordpress - 过滤视频嵌入代码
【发布时间】:2013-07-03 14:11:56
【问题描述】:

在 Wordpress 中,如何过滤在主题管理中保存 vimeo 嵌入代码的文本区域?通过 update_post_meta 保存到数据库时,使用 sanitize_text_field 会使代码无法使用。

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

【问题讨论】:

  • 不确定它是否适合您的应用程序,但有一个很棒的插件叫做[iframe],它允许在所见即所得页面/帖子编辑器中嵌入视频代码:wordpress.org/plugins/iframe

标签: php wordpress


【解决方案1】:

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

【讨论】:

  • 是的,但在这种情况下,我需要添加几个额外的选项 - 比如 - vimeo 或 youtube / 高度、宽度等...我正在寻找一种方法来一次验证这篇文章.
  • 您可以使用 php.net/manual/en/function.html-entity-decode.php 之类的东西 - 抱歉,我知道我的答案并不理想,只是想提供帮助。另外,我建议 wordpress.stackexchange 解决此类问题
【解决方案2】:

我建议您将视频的 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() 清理文本区域,如我的回答here 所示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    • 2011-07-10
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 2013-04-08
    • 2010-12-30
    相关资源
    最近更新 更多