我需要添加一个主题切换逻辑到一个网站。不幸的是,我所尝试的似乎并没有按要求发挥作用。
主题需要根据用户是否在网站的博客部分进行切换(例如。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
为了让主题切换正常工作,但这似乎还为时过早,无法确定用户在站点上的实际位置。有没有办法做到这一点?
参考:需求基于我影响范围之外的要求(阅读:客户)。这个次要的“只写博客”主题与站点的其他部分(由另一个开发人员制作)有着根本的不同,因此很遗憾,将其集成到现有主题中是不可行的