乍一看,这似乎是一个普通的PHP问题,但至少还有一个WordPress问题。让我们从那开始。
您不应该使用include
或TEMPLATEPATH
在主题中。还有其他选择include
在WordPress中:get_template_part()
和locate_template()
. 和常数TEMPLATEPATH
和STYLESHEETPATH
将在不久的将来被弃用,因为它们太受限制。
在你的情况下,我建议使用locate_template()
. 它接受三个参数:
一组$template_names
.一个参数$load
文件(如果找到)
A$require_once
参数我们暂时忽略了这一点。和$name
. 然后搜索名为"{$slug}-{$name}.php"
在当前主题目录中,并将其包含在locate_template()
.如果函数找到文件,则返回路径,否则返回空字符串。
假设您的分类中的单个帖子模板video
已命名single-cat-video.php
默认文件名为single-cat-default.php
(您应该始终使用语音文件名)。
此外,您还可以搜索一系列类别:
$my_cats = array( \'diario\', \'predicacion\', \'audio\', \'video\' );
现在,您只需遍历这些类别数组,直到找到一个文件:
$found = FALSE;
foreach ( $my_cats as $my_cat )
{
if (
// we are in a category from our array and …
in_category( $my_cat )
// … actually found a matching file.
and locate_template( "single-cat-$my_cat.php", TRUE )
)
{
// As we now know that we got a template and already ↑ included it,
// we can set a flag to avoid loading the default template.
$found = TRUE;
// … and immediately stop searching.
break;
}
}
// no matching category or no file found. load the default template part
if ( ! $found )
{
locate_template( "single-cat-default.php", TRUE );
}
这本书可以写得更简洁,但我认为现在更容易阅读。要添加类别,只需创建一个新模板并扩展数组
$my_cats
无需触摸代码的其余部分。