WordPress как на ладони
wordpress jino

Замена шаблона на лету, только для администратора

Есть активно работающий сайт - постоянно добавляются статьи, идут комментарии.

Необходимо полностью заменить шаблон. Перед переходом на новый шаблон его необходимо установить и настроить. Но в шаблоне много настроек, которых нет в старом шаблоне. Для полноценной настройки шаблона его необходимо активировать.

Вот и возник вопрос: как сделать так, чтобы активировать новый шаблон только для администратора (или специально созданного пользователя с правами администратора).
Чтобы настраивая новый, ни чего не менялось в выводах старого?

0
ims 2.10 года назад
  • 1
    Kama4464

    Нашел такой вариант:

    function custom_load_template() {
    	return 'twentytwelve';
    }
    
    add_filter( 'template', 'custom_load_template' );
    add_filter( 'stylesheet', 'custom_load_template' );

    Тут используются 2 фильтра template (фильтрует имя текущей темы) и stylesheet (фильтрует название текущих стилей). Указываем для фильтров название необходимой темы twentytwelve.

    Хук должен быть расположен до подключения functions.php темы, т.е. должен быть плагином.

    Конкретно для вашего случая:

    Создаем плагин: создаем файл switch_theme.php с таким кодом:

    <?php
    /*
    Plugin Name: Отдельная тема для админа
    Description: Недоделанный плагин, который изменяет тему для администратора.
    */
    
    // вешаем на plugins_loaded, чтобы можно было определить пользователя
    add_action('plugins_loaded', 'switch_theme_for');
    function switch_theme_for(){
    	// условия только для администраторов   
    	if( ! current_user_can('manage_options') )
    		return;
    
    	add_filter( 'template', 'custom_load_template' );
    	add_filter( 'stylesheet', 'custom_load_template' );
    }
    
    function custom_load_template() {
    	return 'twentytwelve';
    }

    Закидываем файл в папку плагинов, активируем плагин в админке. Название темы для админа меняем в custom_load_template().

    campusboy 2.6 года назад

    Тимур, добавь это к себе в авторские плагины - это же круто. Находка для разработчика. Тот вариант, что я советовал человеку рабочий, но этот не просто рабочий, а ещё и крайне удобный! Спасибо большое автору за вопрос, а тебе за прекрасное решение.

    Kama 2.6 года назад

    Для плагина нужно сделать настройку наверное? Но спасибо, за совет, может быть добавлю, хотя не вижу особого смысла в этом.

    campusboy 2.6 года назад

    Я сохранил в php файле и засунул в папку с плагинами. А из настроек в голову приходит лишь выбор используемой темы для админа. Но это так, мысли smile Насчет смысла, ты и прав. Кому надо, то сделает как я, к примеру. Кстати, вот у человека сессия сбивалась, а у меня сбились некоторые настройки некоторых плагинов. Не знаю, почему: то ли из за этого кода, то ли потому что просто сменил тему. Кстати, виджеты также послетали.

    Андрей 1.5 года назад

    А текущие настройки виджетов и прочее не послетает при переключении?

    Комментировать
  • 0

    При активации такого плагина сессия постоянно слетает, и приходится перелогиниваться

    Kama 2.9 года назад

    Изменил код в ответе. У меня и с прошлым сессия не слетела и с этим все норм...

    Комментировать
  • 0
    campusboy1848 cайт: wp-plus.ru

    Я бы скорее всего скачал весь сайт вместе с базой на компьютер и экспериментировал на локалхосте.

    ims 2.9 года назад

    Не пойдёт. Я же говорю, что сайт активный, постоянно добавляются посты, идут комменты.
    Если на локальном делать, то потом проблемно будет переносить на сервер. Настройки в options собьются

    campusboy 2.9 года назад

    Вы же шаблон разрабатываете/модернизируете, зачем Вам свежие комментарии и статьи для этого? Скачали дамп на локальный сервер и работаете со старыми комментами и статьями, тут же для разработки шаблона главное чтобы они вообще были, чтобы внешне выглядит как всё отрабатывается и отображается. А какие проблемы с переносом шаблона? Что получилось копируете на сервер (лишь папку с шаблоном). Да, скорее всего настройки в админке темы могу сброситься. Но сколько я тем так переносил - выставить их обратно не составляет труда, пара минут, даже меньше. Зато таким образом вы совершенно ничем не рискуете.

    Комментировать
  • 0
    leks cайт: ekskursburo.ru

    Код не работает для дочерних тем. но учитывая объем jonradio-multiple-themes против пары строк...

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Регистрация. Вход.