我遇到的问题是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');

#1 楼

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());


如果没有子主题,则“ template”和“ stylesheet”函数都将返回父主题位置。

请注意这些函数与以_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
16年6月18日在4:24

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

–蒂姆·马隆(Tim Malone)
16年6月18日在4:31

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

– rinogo
17年5月4日在18:46

答案不错,但WordPress的命名却不好-它不仅用于样式表,还用于JS,资产,包含等。

– Paul Feakins
18/09/21在16:29

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

–蒂姆·马隆(Tim Malone)
18年9月21日在21:55

#2 楼

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

通过这种方式可以将主题与所有自定义文件分开,从而可以在不丢失自定义工作的情况下更新主题。

Your out-of-the-box theme lives here
------------------------------------
\Site\wp-content\themes\some_theme


Your child theme lives here
---------------------------
\Site\wp-content\themes\some_theme-child


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

\themes\some_theme
\themes\some_theme-child\ (all your custom php template files here)
\themes\some_theme-child\images
\themes\some_theme-child\includes 
\themes\some_theme-child\languages
\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');

在xhr调用中使用get_stylesheet_directory_uri()等。

#3 楼




include (TEMPLATEPATH . '/path-to/my-file.php');



include dirname( __FILE__ ) . '/path-to/my-file.php';

这对于大多数常见问题应该有效