Достаточно часто в процессе разработки темы 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;
}