将模板文件用于子目录MULSITE中的单个帖子

时间:2016-11-01 作者:imnotastack

我正在多站点的子目录站点上工作(例如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页面上搜索过,似乎没有人解决过这个问题。要么我把这一切都搞错了(可能是这样),要么我没有正确地搜索。任何一种方式的建议都会非常有用。

1 个回复
最合适的回答,由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;\' 
    )
);
希望这对你有帮助。