这里有一些非常好的介绍性答案。
大体上get_template_part()
允许主题开发人员设置模板文件的特定顺序。当它应用于CSS选择器时,可以将其类似于专用性。在设计某样东西时,您希望从最低限度的特殊性开始,以便在设计中需要单独注意的部分可以轻松地覆盖它。
例如,你在设计一个博客的样式,你创建了一个loop.php 可以很好地标记职位的文件。但您需要提前计划,然后在模板文件中使用其他上下文说明符调用它-例如,在索引页上,您可以调用get_template_part( \'loop\', \'index\' );
, 在单个模板上,您可以调用get_template_part( \'loop\', \'single\' );
, 在存档页面上,您可以调用get_template_part( \'loop\', \'archive\' );
, 等等当您决定在归档页面上标记不同于主页的循环时,这将非常容易:只需创建一个loop-archive.php 模板,将使用它,而不是泛型loop.php.
但背后的魔力get_template_part()
在函数中locate_template()
, 它首先检查主题目录,然后检查名为的文件的父目录(如果存在)。这对于插件开发非常有用。在我的一个插件中,我定义了一个自定义帖子类型,并在插件目录中为该自定义帖子类型创建了一个循环模板文件。但是我想允许使用我的插件的主题覆盖我的标记,如果他们选择的话。这就是locate_template()
真的很神奇。
locate_template($template_names, $load = false, $require_once = true )
将在样式表目录中的$template\\u names数组中查找每个名称,然后在模板目录中查找。将“true”作为$load参数传递意味着它将需要找到的第一个文件,如果没有找到模板文件,则返回空字符串。因此,我可以在插件中执行以下操作:
if ( \'\' === locate_template( \'loop-mycustomposttype.php\', true, false ) )
include( \'loop-mycustomposttype.php\' );
。。。这应该可以让主题开发人员通过包含一个名为
loop-mycustomposttype.php 在他们的主题中。