无法使用过滤器TEMPLATE、OPTION_TEMPLATE和OPTION_STYLESHEET切换到子主题

时间:2019-10-28 作者:Laurence Cope

为了动态切换功能文件中的主题(例如,当需要为不同的域但相同的网站创建不同的主题时),可以使用以下方法:

add_filter(\'template\', \'my_switch_theme_for_domain\');
add_filter(\'option_template\', \'my_switch_theme_for_domain\');
add_filter(\'option_stylesheet\', \'my_switch_theme_for_domain\');

function my_switch_theme_for_domain()
{
    return \'my-child-theme\';
}
当想要调用儿童主题时,这似乎不起作用。当我调用儿童主题时,会出现一个白色/空白页面,我已经尝试了一些。

是否有其他代码可以切换到子主题?

1 个回复
SO网友:Sally CJ

对于父主题,templatestylesheet 应相同,这是父主题目录的名称。

但对于一个孩子来说,template 应该是父主题的目录名,而stylesheet 是子主题的目录名。

因此,如果您具备以下条件:

父主题:二十一(目录名:twentynineteen)

子主题:我的子主题(目录名:my-child-theme) 它以“二十一世纪”为主题。

如果您想使用相关挂钩将子主题设置为活动主题,那么您的代码如下所示:

(您可以组合这些功能,但在这个答案中,我有意使它们独立。)

// For the parent theme.
add_filter(\'template\', \'my_switch_theme_for_domain\');
add_filter(\'option_template\', \'my_switch_theme_for_domain\');
function my_switch_theme_for_domain() {
    return \'twentynineteen\';
}

// For the child theme.
add_filter(\'stylesheet\', \'my_switch_theme_for_domain2\');
add_filter(\'option_stylesheet\', \'my_switch_theme_for_domain2\');
function my_switch_theme_for_domain2() {
    return \'my-child-theme\';
}
但如果你想twentynineteen (父主题)作为使用这些挂钩的活动主题,则上述两个函数都应返回twentynineteen 这意味着主题样式表(和其他文件)将从twentynineteen 仅目录。

我希望这有道理……)

相关推荐

How to delete default themes

更新WordPress时,是否可以自动删除默认主题(2111、2112、2113…)或禁用自动重新安装?我读过这个question 我知道很多人认为至少有一个这样的主题是有用的。但我从来没有用过这些东西,只是想让它们消失;)