get_template_directory_uri() 在 SSL 站点上返回 http 而不是 https



我知道这个话题已经讨论过了,但似乎没有找到解决方案。这是我的情况:我有一个wordpress网站,现在有SSL。但是,在主题中,资源添加如下:

wp_enqueue_script( 'spectrumwp-conditional', get_template_directory_uri() . '/js/vendor/conditional.js', array('jquery'), null, true);

但是 get_template_directory_uri() 返回的 URL 包含 http 而不是 https。

你能帮我解决这个问题吗?

编辑:我把它添加到我的 wp-config.php 文件中

$_SERVER['HTTPS']='on';

指向资源的链接以 https://显示,而不是例如

https://www.exaple.com/wp-content/plugins/...

我有

https://www.example.com/plugins/LayerSlider/...

例如,缺少WP内容文件夹

最终更新:

取消注释

 define('FORCE_SSL_ADMIN', true);

和添加

if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
 {  $_SERVER['HTTPS']='on'; }

就在行之前

/* That's all, stop editing! Happy blogging. */

修复了问题!只是,我建议不要使用 $_SERVER['HTTP_X_FORWARDED_PROTO'],因为它可能不够准确。

解决!

您需要

使用 is_ssl() 来检查站点是否正在运行 https://或 http://

这是要检查和重定向的钩子:

function check_if_https() {
if ( !is_ssl() ) {
    wp_redirect('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 301 );
    exit();
  }
}
add_action ( 'template_redirect', 'check_if_https', 1 );
进入

"设置"->"常规"并检查站点 URL。

听起来您遇到的问题是此值仍然是HTTP,而不是HTTPS。请谨慎处理此更改。确保您有一个有效的备份,并充分了解为什么需要更改此 URL 以及它将产生的影响。

正确设置站点 URL 后,get_template_directory_uri()将自动提供 HTTPS 链接。

最新更新