Intereting Posts

Тема переключения только изменяет используемую таблицу стилей

У меня есть плагин, который я использую для переключения тем для определенного пользователя для разработки. При регистрации в качестве этого пользователя они видят разную таблицу стилей, но файлы тем, functions.php, header.php и т. Д. Являются активной темой для всех остальных.

Что я делаю неправильно?

function change_user_theme($template) { global $user_ID; if ( in_array( $user_ID, array( 5 ) ) ) { $template = 'fezmobile'; } else { $template = 'fezforprez'; } return $template; } add_filter('template', 'change_user_theme'); add_filter('stylesheet', 'change_user_theme'); add_filter('option_template', 'change_user_theme'); add_filter('option_stylesheet', 'change_user_theme'); 

Взгляните на мой ответ здесь:

Переключить тему через панель параметров

Код выглядит следующим образом:

 add_action( 'setup_theme', 'switch_user_theme' ); function switch_user_theme() { if ( in_array( wp_get_current_user()->ID, array( 5 ) ) ) { $user_theme = 'fezforprez'; add_filter( 'template', create_function( '$t', 'return "' . $user_theme . '";' ) ); add_filter( 'stylesheet', create_function( '$s', 'return "' . $user_theme . '";' ) ); } } 

Вы должны поменять шаблон и таблицу стилей на действие setup_theme .

Я на самом деле нашел лучшее решение, но только после отметки ответа выше, в качестве ответа.

 <?php add_action('setup_theme', 'switch_user_theme'); function switch_user_theme() { if ( ! is_admin() && current_user_can( 'administrator' ) ) { $user_theme = 'name-of-your-theme-directory'; add_filter( 'template', create_function( '$t', 'return "' . $user_theme . '";' ) ); add_filter( 'stylesheet', create_function( '$s', 'return "' . $user_theme . '";' ) ); } } ?> 

Используя этот код, а не тот, который предоставляется @sanchothefat, такие функции, как:

 <?php echo get_template_directory_uri(); ?> 

Будет теперь работать правильно.