指向父主题而非子主题的get_template_directory_uri


35

我遇到的问题是get_template_directory_uri指向父主题,例如 site/wp-content/themes/twentythirteen/myGallery/gallery_functions_include.php

但我想指出我的孩子主题 site/wp-content/themes/child-twentythirteen/myGallery/gallery_functions_include.php

我正在使用的是 include (TEMPLATEPATH . '/myGallery/gallery_functions_include.php');

Answers:


70

get_template_directory_uri() 将始终返回当前父主题的URI。

要获取子主题URI,您需要使用get_stylesheet_directory_uri()

您可以在文档中找到这些内容,以及用于获取各种主题目录位置的其他有用功能的列表。


如果您喜欢使用常量,则TEMPLATEPATH类似于调用get_template_directory()(即父主题),STYLESHEETPATH类似于调用get_stylesheet_directory()(即子主题)。

这些常量由WordPress核心设置wp-includes/default-constants.php,基本上如下所示:

define('TEMPLATEPATH', get_template_directory());
...
define('STYLESHEETPATH', get_stylesheet_directory());

如果没有子主题,则“模板” “样式表”功能都将返回父主题位置。

请注意,这些函数与以结尾的函数之间的区别_uri-这些将返回绝对服务器路径(例如/home/example/public_html/wp-content/yourtheme),而这些_uri函数将返回公共地址(即URL)-例如。http://example.com/wp-content/themes/yourtheme


怎么包含(TEMPLATEPATH。'/myGallery/gallery_functions_include.php'); 该目录也转到父目录
Elroy Fernandes

@ElroyFernandes我已将此添加到我的答案中。STYLESHEETPATH是您想要的常量,而不是
Tim

2
感谢您回答问题,而不仅仅是说RTM。这首先出现在我的搜索结果中。
rinogo

2
好答案,但WordPress的的一部分坏的命名-它不只是样式,它是JS,资产,包括等
保罗Feakins

1
@PaulFeakins不要开始在WordPress中命名不一致-这是一条漫长而多风的道路,导致人们知道哪里去了!;)
蒂姆·马隆

0

您应该将自定义模板(不受活动主题控制的模板)移动到子文件夹。

这样可以使主题与所有自定义文件分开,这样就可以在不丢失自定义工作的情况下更新主题。

开箱即用的主题就在这里
------------------------------------
\\网站\ wp-content \ themes \ some_theme
您的孩子主题住在这里
---------------------------
\\网站\ wp-content \ themes \ some_theme-child

您的自定义样式和模板以及所有包含的内容(如自定义javascript,未保存到WP的图像,自定义字体,json数据文件以及您可能会排队的任何插件)应移到主题的子文件夹之外。

\ themes \ some_theme
\ themes \ some_theme-child \(所有您自定义的php模板文件在这里)
\ themes \ some_theme-child \ images
\ themes \ some_theme-child \ includes 
\ themes \ some_theme-child \语言
\ themes \ some_theme-child \ json 
\ themes \ some_theme-child \ style

对于您的自定义样式页面(不是主题的重写style.css),使用wp_enqueue_style('some-css',get_stylesheet_directory()。'/style/some.css',false,'0.0.1','all')入队。

get_stylesheet_directory_uri()与xhr调用等配合使用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.