Intereting Posts
использование admin_url () в add_menu_page () Удаление плагинов: зачем запускать dbDelta после $ wpdb-> query ($ drop_sql) ajax вызов в wordpress front end Расширение плагина AZIndex для использования пользовательских типов сообщений и пользовательских таксономий Опубликовать Metaxbox на лицевой странице Как использовать ajax для получения нескольких выходов? Получить настраиваемые поля без _edit_last, _edit_lock, _wp_page_template и _visual-subtitle Категория страницы ошибки Tinymce в WordPress Как автоматически добавить ссылку редактирования на главную страницу любой темы WordPress? Управление резервными копиями: проблемы с пространством Кэш-папка WordPress с W3-Total-Cache не показывает новые сообщения Получите, какой шаблон используется в WordPress-admin Как заменить #comment из структуры почтового адреса WP insert post PHP-функция и пользовательские поля Как указать то же сообщение об ошибке, когда используется неправильный пароль или неправильное имя пользователя?

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

У меня есть плагин, который я использую для переключения тем для определенного пользователя для разработки. При регистрации в качестве этого пользователя они видят разную таблицу стилей, но файлы тем, 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(); ?> 

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