我正在多站点的子目录站点上工作(例如mainsite.domain.com/sub-directory站点)。在主站点上,我建立了一个系统,用户可以在其中创建帖子,并根据分配给他们的类别获得不同的模板文件(例如,“single-11.php”,其中11是与类别匹配的tag\\u id)。
我的问题是,我想对子目录站点使用相同的系统,但当我尝试这样做时,子目录站点的帖子页面不会加载各自的“single-*”。php文件。他们甚至似乎没有加载“单曲”。php文件。所有这些文件都位于同一个主题文件夹中(例如,../themes/twententen/single-11.php)。
目前,我的主站点的单个帖子模板是通过函数中的过滤器加载的。php文件。大致是以下代码:
//Gets post cat slug and looks for single-[cat slug].php and applies it
add_filter(\'single_template\', create_function(
\'$the_template\',
\'foreach( (array) get_the_category() as $cat ) {
if ( file_exists(TEMPLATEPATH . "/single-{$cat->slug}.php") )
return TEMPLATEPATH . "/single-{$cat->slug}.php"; }
return $the_template;\' )
);
我在互联网和WP codex页面上搜索过,似乎没有人解决过这个问题。要么我把这一切都搞错了(可能是这样),要么我没有正确地搜索。任何一种方式的建议都会非常有用。
最合适的回答,由SO网友:CodeMascot 整理而成
使用STYLESHEETPATH
而不是TEMPLATEPATH
. 您可以在中找到定义wp-includes/default-constants.php
文件请看一下。因此,您的代码块如下所示-
//Gets post cat slug and looks for single-[cat slug].php and applies it
add_filter(\'single_template\', create_function(
\'$the_template\',
\'foreach( (array) get_the_category() as $cat ) {
if ( file_exists(STYLESHEETPATH . "/single-{$cat->slug}.php") )
return STYLESHEETPATH . "/single-{$cat->slug}.php";
}
return $the_template;\'
)
);
希望这对你有帮助。