我已经使用插件主题切换器完成了这项工作:http://wordpress.org/plugins/theme-switcher/ (是的,已经2年多没有编辑过了)。
这些主题在浏览器中存储一个cookie,指示用户选择的主题(主题显示为下拉/链接列表小部件,选择主题会更改cookie并将您重定向到主页)。
您可以使用stylesheet
过滤器:
function wpse109022_change_theme_name( $stylesheet ){
//Change stylesheet to appropriate theme (based on cookiee for example)
//$stylesheet should be the theme \'name\', e.g. \'twentytwelve\'
return $stylesheet;
}
add_filter( \'stylesheet\', \'wpse109022_change_theme_name\' );
请注意,主题切换器还使用
template
过滤器,做同样的事情。我相信这是为了向后兼容。(2.5°)
//add_filter( \'template\', \'wpse109022_change_theme_name\' );
有关更多详细信息,请参阅主题切换程序的来源
警告:一个问题是WordPress不记得主题之间的模板。例如:
创建页面并从主题中选择模板A更改主题从新主题中选择模板并重新保存页面切换回原始主题。页面不再具有模板A,如果您使用页面模板,您将希望WordPress记住哪个模板用于哪个主题。我为此编写了一个插件:http://wordpress.org/plugins/remember-my-template/
其基本功能如下:
每次保存页面时,将模板存储为带有键的元数据_wp_page_template_{theme-name}
通过过滤页面模板get_post_metadata
根据主题筛选并替换为适当的模板