我需要添加一个主题切换逻辑到一个网站。不幸的是,我所尝试的似乎并没有按要求发挥作用。
主题需要根据用户是否在网站的博客部分进行切换(例如。is_single(), is_category(), get_post_type() == \'post\'), 相对于任何其他部分(例如。is_shop(), is_page(), 等等)
不幸的是,创建了一个插件来实现这一点,似乎在我唯一可行的地方,这些条件都不可用:setup_theme. 
具有以下功能:
function vnmFunctionality_getTheme() {
    $isBlog = (is_author() || is_category() || is_tag() || is_date() || is_home() || is_single()) && \'post\' == get_post_type();
    if ($isBlog) {
        return \'blog-theme\';
    } else {
        return \'site-theme\';
    }
}
function vnmFunctionality_conditionalThemeSwitch() {
    if (is_admin()) {
        return;
    }
    add_filter(\'template\', \'vnmFunctionality_getTheme\');
    add_filter(\'stylesheet\', \'vnmFunctionality_getTheme\');
}
add_action(\'setup_theme\', \'vnmFunctionality_conditionalThemeSwitch\', 100);
 这是可行的(只要没有错误),但是
$isBlog 将始终返回false,因为在
setup_theme. 如果我不使用
add_action(\'setup_theme\') 而是移动
add_filter 到插件根的行,条件可用,但它会导致许多其他问题(例如
blog-theme 似乎试图表现得像
site-theme, 无法加载所有排队的内容
site-theme\'s函数文件)。
我还试着看global $wp_query 反对,看看我是否能找出你在网站上的位置,但即使在setup_theme. 
我似乎不能迟于setup_theme 为了让主题切换正常工作,但这似乎还为时过早,无法确定用户在站点上的实际位置。有没有办法做到这一点?
参考:需求基于我影响范围之外的要求(阅读:客户)。这个次要的“只写博客”主题与站点的其他部分(由另一个开发人员制作)有着根本的不同,因此很遗憾,将其集成到现有主题中是不可行的