问题描述
通常在我的主题功能文件中,我将要求其他文件保持整洁。
require_once("foo.php");
现在正在做一个小孩主题,我想做同样的事情。我添加了自定义管理选项,似乎不可能包含代码。我已经回应了路径,以确保我正在调用正确的文件,它正在调用正确的位置,但是该文件中的内容似乎没有运行。如果放置在子主题功能文件中,代码运行正常。
最佳解决方案
儿童主题通过目录名称引用父主题,并且在正常安装中,所有主题都在 wp-content/themes/
中,所以我可以说通过相对路径引用这些主题是很好的:
include '../parent-theme/some-file.php';
如果这样让你感到不舒服,我会在 WordPress 3.0.1 中观察以下常数:二十世纪的题为 tt-child 的小题目:
TEMPLATEPATH /home/adam/public_html/wp3/wp-content/themes/twentyten
STYLESHEETPATH /home/adam/public_html/wp3/wp-content/themes/tt-child
所以你可以在你的孩子主题中做以下参考父主题目录:
include TEMPLATEPATH . '/some-file.php';
次佳解决方案
在一个小孩主题中,正确的方法是
require_once( get_stylesheet_directory() . 'foo.php');
在父主题中,您仍然可以使用
require_once ( get_template_directory() . 'foo.php' );
get_template_directory()
仍然在小孩主题中工作,不幸的是目标是父主题目录。在你的情况下,它是有用的
第三种解决方案
嗨 @curtismchale:
不知道这是不是,但是你需要在 foo.php
周围加上引号,就像这样:
require_once('foo.php');
这是否解决您的问题?
第四种方案
你绝对不想硬编码的 URL 。这样做的正确方法是
require_once( get_stylesheet_directory(). '/my_included_file.php' );
查看更多信息在 WordPress Codex
现在,如果你的修改 header.php,其中包含一个 include,您将引用它如下:
require_once( get_stylesheet_directory() . '/../parenthteme/my_included_file.php' );
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。