Wordpress get_template_directory_uri()和bloginfo('template_directory')使用HTTPS

时间:2017-05-12 18:28:42

标签: php wordpress ssl https themes

我正在将当前WordPress 4.7.3网站迁移为完整SSL,当我使用https://前缀登录网站时,该函数会调用get_template_directory_uri()和{{1将跳过路径的主题部分。

我能注意到的一个示例代码行是:

bloginfo('template_directory')

另一个示例代码行是:

wp_enqueue_style('fancybox', get_template_directory_uri() . '/assets/css/fancybox/jquery.fancybox.css', false, null);

如果我使用<img src="<?php bloginfo('template_directory'); ?>/assets/img/myimg.png" class="pull-left img-responsive"/>

请求页面,这是当前工作结果示例摘录的结果源代码中显示的顺序
http://example.com

这与使用... <link rel="stylesheet" href="http://example.com/wp-content/themes/mytheme/assets/css/fancybox/jquery.fancybox.css"> ... <img src="http://example.com/wp-content/themes/mytheme/assets/img/myimg.png" class="pull-left img-responsive"/> ...

调用结果的方法相同
https://example.com

我最近迁移了具有相同WP版本的其他网站和使用相同功能的旧版模板,它们只是工作,这就是为什么我很感兴趣,如果这是一个特定的... <link rel="stylesheet" href="https://example.com/assets/css/fancybox/jquery.fancybox.css"> ... <img src="https://example.com/assets/img/myimg.png" class="pull-left img-responsive"/> ... 或其他设置,会造成我无法弄清楚的这种行为。

为清楚起见,wp_optionsiteurl都设置为home,当然,这不是实际的域名。这是一个干净的WP安装,它的核心没有任何变化,只有主题和几个插件(askimet,S3上传)不应该发生冲突。

有关为https://example.com来电跳过/wp-content/themes/mytheme的原因的任何线索?

2 个答案:

答案 0 :(得分:1)

由于主题上的几个配置,最终发生了这种情况:

add_theme_support('root-relative-urls');    // Enable relative URLs
add_theme_support('rewrites');              // Enable URL rewrites

删除后,我能够获得预期的结果,该网站现在可以使用https://使用SSL。

为了找到这个,我必须比较其他工作模板中的每个文件,并通过试验和错误进行比较。

希望将来不会浪费太多时间浪费在类似问题上的人!

答案 1 :(得分:0)

如果您将get_template_directory_uri()替换为bloginfo('template_directory'),那么您正在获取没有主题路径的路径是正常的,因为函数bloginfo不会返回任何值,它只是{{ 3}}价值。侧节点,如果您查看页面源,您可能应该看到DOM中的某个位置:

https://example.com/example.com/wp-content/themes/mytheme

因此,当您将样式排入队列时,它只会排队'/assets/css/fancybox/jquery.fancybox.css'

你想要的是echo,它将返回值而不是echo:

wp_enqueue_style('fancybox', get_bloginfo('template_directory') . '/assets/css/fancybox/jquery.fancybox.css', false, null);