问题描述

通常在我的主题功能文件中,我将要求其他文件保持整洁。

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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。