我最近将我的Wordpress v4.3.1博客更改为HTTPS
,导致YouTube视频停止工作。显示空白区域而不是视频播放器。这是因为当页面通过http
提供时,Firefox会阻止https
个内容。
Wordpress将帖子中的YouTube链接转换为iframe
HTML代码,但似乎忽略了https
。
我尝试使用如下的短代码,但没有成功:
[youtube=https://www.youtube.com/watch?v=IxZ_ZznO2ek]
我已按https://wordpress.org/support/topic/forcing-ssl-return-for-youtube-oembed中所述尝试了apply_filter
,但没有成功。这可能与apply_filter
未正确应用有关。
$content = get_the_content();
add_filter('the_content', 'add_secure_video_options', 10);
$content = apply_filters('the_content', $content);
我还有哪些其他选择?
答案 0 :(得分:1)
请参阅https://www.bram.us/2014/12/06/migrating-your-wordpress-website-from-http-to-https/的第4步:您需要更新数据库的内容才能使用https嵌入。
例如:
# Update YouTube embeds
UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://www.youtube.com', 'https://www.youtube.com');
对于oembeds,这是另一回事,因为它们没有存储在wp_posts
中。在wp_postmeta
中快速搜索oembeds时(无法验证,因为我不使用oembed):
SELECT * FROM wp_postmeta WHERE meta_key LIKE "%_oembed%"
您需要使用替换查询替换这些,如上面的说明所示。在我的头脑中:
# Update YouTube oembeds
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, 'http://www.youtube.com', 'https://www.youtube.com');
这应该可以解决问题。
答案 1 :(得分:0)
[embed width="123" height="456"]http://www.youtube.com/watch?v=dQw4w9WgXcQ[/embed]
答案 2 :(得分:0)
我用非Wordpress方式解决了:
$content = str_replace('http://www.youtube.com', 'https://www.youtube.com', $content);
$content = str_replace('http://youtube.com', 'https://youtube.com', $content);