如何在网址中使用https而不是http嵌入youtube视频?


8

我正在运行一个仅通过SSL / https进行通信的网站,因此,如果我使用http嵌入youtube视频,则会收到一条错误消息,指出该网站并不完全安全。是否可以重写某些内容,以便WordPress接受https并仍自动将添加到内容区域的youtube链接嵌入?现在,由于我尝试嵌入https youtube链接时,显示的只是URL,没有电影。

更新资料

我试图在functions.php中使用此代码添加提供程序,但它什么也没做:

wp_oembed_add_provider('https://youtu.be/*', 'https://youtube.com/oembed' );
wp_oembed_add_provider('#https://(www\.)?youtube.com/watch.*#i', 'https://youtube.com/oembed', true);
wp_oembed_add_provider('http://youtu.be/*', 'https://youtube.com/oembed' );
wp_oembed_add_provider('#http://(www\.)?youtube.com/watch.*#i', 'https://youtube.com/oembed', true);

1
好的,它在Wordpress Trac中:core.trac.wordpress.org/ticket/18719
Richard B

似乎有办法解决它,但我不知道究竟如何实现在WordPress此解决方案,想一些帮助:groups.google.com/group/youtube-api-gdata/browse_thread/thread/...
理查德乙

Answers:


5

http://core.trac.wordpress.org/ticket/18719现在有一个可用的补丁程序。

编辑:插件代码执行类似的操作直到补丁进入:

wp_oembed_add_provider('#https://(www\.)?youtube.com/watch.*#i', 'http://youtube.com/oembed?scheme=https', true);
wp_oembed_add_provider('https://youtu.be/*', 'http://youtube.com/oembed?scheme=https', false );

是的,我也在该票证中评论过。谢谢!
理查德B

7

Otto的解决方案在WP 3.6中不起作用,大概是因为oembeds的核心已经更改,现在确实匹配https://,所以添加的提供程序永远不会匹配。尽管https://现在在核心中匹配,但是即使原始URL是https://,它也始终提供http://嵌入,因此我们在这里仍然遇到相同的问题。

我决定只转换所有相对于协议的oembeds:

function my_embed_oembed_html( $html ) {
    return preg_replace( '@src="https?:@', 'src="', $html );
}
add_filter( 'embed_oembed_html', 'my_embed_oembed_html' );

1
在此错误正在内核中修复之前,一直在寻找一些临时的解决方案,这是唯一可行的解​​决方案。谢谢!wp_oembed_add_provider()例如,从未使变体起作用。
Markus Amalthea Magnuson

是2015年,这个错误似乎还没有解决?
巴特2015年

2

您可以在functions.php文件中破解一个强制返回的https,以搜索具有以http开头的src的iframe,并替换https。[我省略了这些网址的“是”,因为其中一些共享网址是youtu.be和youtube.com。

//Embed Video Fix
function add_secure_video_options($html) {
   if (strpos($html, "<iframe" ) !== false) {
        $search = array('src="http://www.youtu','src="http://youtu');
        $replace = array('src="https://www.youtu','src="https://youtu');
        $html = str_replace($search, $replace, $html);

        return $html;
   } else {
        return $html;
   }
}
add_filter('the_content', 'add_secure_video_options', 10);

谢谢-您也可以将http://更改为//以遵循托管站点的架构。请注意,为什么默认情况下WP不这样做(主机同时支持两种协议)
Adam

1

YouTube支持视频的https网址(只需将“ s”添加到常规网址中)。但是,他们还指出:

特别是,目前只能通过HTTPS访问YouTube播放器代码。当您在嵌入代码中使用HTTPS URL时,实际的视频比特流以及YouTube播放器加载的一些其他内容仍可以通过标准HTTP连接进行访问。

因此,您似乎尚无法获得https视频供稿。您发布的追踪链接似乎证实了这一点:(Otto42评论7)“直到YouTube在iframe中返回https结果,在大多数浏览器中嵌入此类链接只会导致页面损坏,因为iframe不是SSL 。”

参考:http : //apiblog.youtube.com/2011/02/https-support-for-youtube-embeds.html

您也可以查看以下解决方案:http : //www.adammershon.com/display-youtube-videos-on-ssl-page/(这实际上将“提供”视频,就像在您的页面上一样。)

(我看不到有关该主题的任何更新。)


但这并不意味着不能将iframe设为https,以便至少以这种方式加载播放器代码。您链接的页面说可以。在我的测试中,将https src放在iframe上可以在https站点上正常工作,而不会显示http src-但是即使我将https链接放在[embed]中,我也可以获得带有http的iframe。
2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.