Достаточно часто в процессе разработки темы WordPress, у меня возникает потребность посмотреть как будет выглядеть тема на реальном сайте. Для того чтобы не шокировать посетителей, нам необходимо чтобы WordPress автоматически переключал тему. Например, в то время как большинству посетителей сайта будет отображаться стандартная тема, WordPress будет отображать другую тему для администратора.
По умолчанию в WordPress нет возможности автоматически переключать темы. Но данный недостаток легко устраняется специальным плагином. Плагин поддерживает родительские и дочерние темы WordPress. По умолчанию плагин устанавливает разные темы для посетителей и администраторов сайта. Но при желании, плагин можно легко изменить таким образом, чтобы WordPress переключал тему по cookie или другим условиям.
<?php /* Plugin Name: Theme Switcher Plugin URI: http://codebeer.ru Description: Different WordPress theme, depending of the current user Author: SK Version: 0.1.0 Author URI: http://codebeer.ru */ $theme_name = 'Code.Beer'; $theme_list = array(); add_action('plugins_loaded', 'start', 1); function start() { if ( current_user_can('manage_options') ) { $GLOBALS["theme_list"] = get_theme_list(); add_filter('stylesheet', 'load_style'); add_filter('template', 'load_theme'); } } function load_style() { foreach ($GLOBALS["theme_list"] as $theme) { if ($theme['Name'] == $GLOBALS["theme_name"]) { return $theme['Stylesheet']; } } } function load_theme() { foreach ($GLOBALS["theme_list"] as $theme) { if ($theme['Name'] == $GLOBALS["theme_name"]) { return $theme['Template']; } } } function get_theme_list() { $wp_themes = array(); foreach (wp_get_themes() as $theme) { $name = $theme->get('Name'); if ( isset( $wp_themes[ $name ] ) ) $wp_themes[ $name . '/' . $theme->get_stylesheet() ] = $theme; else $wp_themes[ $name ] = $theme; } return $wp_themes; }