我正在运行一个仅通过SSL/https进行通信的站点,因此如果我使用http嵌入youtube视频,我将收到一条错误消息,说明该站点不完全安全。有没有可能重写一些东西,以便WordPress接受https,并且仍然自动嵌入添加到内容区域的youtube链接?因为现在,当我尝试嵌入https youtube链接时,只显示URL,没有电影。
Update
我尝试在函数中添加使用此代码的提供程序。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);
SO网友:bradt
Otto的解决方案在WP 3.6中不起作用,可能是因为Oembed在core中已经更改,现在确实匹配https://,所以添加的提供者永远不会匹配。虽然https://现在在core中匹配,但它始终提供http://嵌入,即使原始URL是https://,所以这里仍然存在相同的问题。
我决定将所有oembeds协议转换为相对的:
function my_embed_oembed_html( $html ) {
return preg_replace( \'@src="https?:@\', \'src="\', $html );
}
add_filter( \'embed_oembed_html\', \'my_embed_oembed_html\' );
SO网友:troutacular
您可以在函数中破解一个强制https返回。php文件,用于搜索具有以http开头的src并替换https的IFrame。[我省略了这些URL的“be”,因为一些共享URL是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);