【问题标题】:Force Wordpress to use https for embeds强制 Wordpress 使用 https 进行嵌入
【发布时间】:2015-09-23 04:03:19
【问题描述】:

我最近将我的 Wordpress v4.3.1 博客切换到 HTTPS,导致 YouTube 视频停止工作。显示空白区域而不是视频播放器。这是因为当页面通过 https 提供时,Firefox 会阻止 http 内容。

Wordpress 将帖子中的 YouTube 链接转换为 iframe HTML 代码,但似乎忽略了 https

我尝试如下使用简码,但没有成功:

[youtube=https://www.youtube.com/watch?v=IxZ_ZznO2ek]

我也尝试过apply_filter,如https://wordpress.org/support/topic/forcing-ssl-return-for-youtube-oembed 中所述,但没有成功。这可能与 apply_filter 未正确应用有关。

$content = get_the_content();                       
add_filter('the_content', 'add_secure_video_options', 10);
$content = apply_filters('the_content', $content);

我还有哪些选择?

【问题讨论】:

    标签: wordpress


    【解决方案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');

    对于 oembed,这是另一回事,因为它们不存储在 wp_posts 中。当快速谷歌搜索时,oembed 被缓存在wp_postmeta (无法验证,因为我不使用 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');

    这应该可以解决问题。

    【讨论】:

      【解决方案2】:
      [embed width="123" height="456"]http://www.youtube.com/watch?v=dQw4w9WgXcQ[/embed]
      

      【讨论】:

        【解决方案3】:

        我已经用非 Wordpress 的方式解决了:

        $content = str_replace('http://www.youtube.com', 'https://www.youtube.com', $content);
        $content = str_replace('http://youtube.com', 'https://youtube.com', $content);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-06-03
          • 2015-10-12
          • 1970-01-01
          • 2017-06-23
          • 2018-06-08
          • 2011-12-23
          • 1970-01-01
          相关资源
          最近更新 更多