在子主题功能文件中包含文件


8

通常,在主题函数文件中,我将需要其他文件来保持整洁。

require_once("foo.php");

现在,我想以儿童主题工作。我正在添加自定义管理选项,似乎无法包含代码。我已经回显了路径,以确保我正在调用正确的文件,并且正在调用正确的位置,但是该文件内部似乎没有任何运行。如果将代码放在子主题功能文件中,则代码运行良好。


您能再发布一些代码来确切地显示您的工作吗?
MikeSchinkel 2010年

Answers:


13

子主题通过目录名称引用父主题,并且在正常安装中,所有主题都存在于中wp-content/themes/,所以我说可以通过它们的相对路径来引用这些主题:

include '../parent-theme/some-file.php';

如果让你不舒服,我看到在WordPress 3.0.1以下常量与twentyten子主题名为TT-孩子

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';

我一直在寻找不变的STYLESHEETPATH。如果使用子主题,则将其包括在内。
curtismchale

我什至感到惊讶的是,您甚至可以考虑使用硬编码路径……主题不应该只在一个环境中起作用。我可以理解get_template_directory()是否不存在……但是确实存在。我才意识到,这是从2010年洛尔一个问题
基督徒

顶部选项对我不起作用。我不确定为什么当我确实具有指向父文件的正确相对路径时。第二个选项确实对我有用,谢谢。
bowlerae

12

在儿童主题中,正确的方法是

require_once( get_stylesheet_directory() . '/foo.php');

在父主题中,您仍然可以使用

require_once ( get_template_directory() . '/foo.php' );

get_template_directory()仍然适用于子主题,可悲的是针对父主题目录。在您的情况下很有用


1
我不得不使用'/'例如require_once(get_stylesheet_directory()。'/foo.php');
ssaltman

谢谢@ssaltman。没错,文档确认了这一点:developer.wordpress.org/reference/functions/…我编辑了答案
Christian

2

@curtismchale

不知道是否这样,但是您需要在周围加上引号foo.php,例如:

require_once('foo.php');

这样可以解决您的问题吗?


哈哈,请注意。我在这里错过了它,但我将它作为儿童主题。
curtismchale


2

您绝对不希望对URL进行硬编码。这样做的正确方法是

require_once( get_stylesheet_directory(). '/my_included_file.php' );

Wordpress Codex上查看更多信息

现在,如果您修改了包含头的示例header.php,则将其引用如下:

require_once( get_stylesheet_directory() . '/../parenthteme/my_included_file.php' );

0

完全有可能并且通常包含在中functions.php

我在子主题中这样做(php代码的子目录):

include 'php/core.php';

如果遇到没有明显原因的问题,请尝试在中启用调试模式wp-config.php

define('WP_DEBUG', true);

可能发生了相关的错误,但未显示。


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.