В этой статье я разберу, как можно дорабатывать wordpress-сайт с темой для администратора.
Я постоянно дорабатываю этот сайт: поменяю размер заголовка, доработаю фичу, выведу количество просмотров, заменю дизайн главной страницы.
Для мелких задач, которые не лезут в базу данных и не вызывают крах сайта — можно просто допиливать прям на боевой версии.
Достаточно делать это под администратором:
<? if (current_user_can( 'administrator' )): ?>
// код, который будет виден только админу
// можно положить сюда html, тег style и теги script
<? endif; ?>
Но иногда, когда работаешь с базой, ошибки могут ломать весь сайт, независимо от того, что там стоит условие администратора.
Пользователи заходят и видят вот это:

Не очень круто, и чем больше сайт, тем сложнее: php капризный малый.
К тому же хочется вести версии сайта. Мой сайт существует лет 6−7. И за это время сменилось 9 версий сайта. Я за эти 9 версий делал много крутых штук на сайте, а потом вырезал за ненадобностью. Но сейчас они могут мне понадобиться, а их уже нет.
Вот это хочется избежать. Пусть все 9 версий будут доступны мне в любой момент времени
Решение
Чтобы решить эту задачу, нужно создать другую тему и настроить её только для администратора. Там можно чудить без условий и ошибки не крашат сайт — проверял.
Это удобно, так как можно делать версии, мои темы называются вот так:

Я кайфую от того, что я могу себе позволить переключиться на любую тему и забрать оттуда какой-нибудь код в новую тему.
Какой порядок действий
- Дублируем тему, которая будет следующей версией
- Добавляем и активируем плагин, который далает нужную нам тему только для администратора
- Пишем название темы в плагин
- Переключаем тему для всех
1 шаг — дублируем тему
Я пользуюсь программой FTP, вы пользуйтесь своими инструментами. Нам надо зайти в wp-content/themes/
и продублировать тему.

После копирования темы не забудьте в новой теме зайти в styles.css
и поменять название темы:

Можно подумать, что темы раздуют ваш хостинг и место быстро закончится — нет и ещё раз нет. Темы содержат только файлы для оформления. Максимум изображения/иконки для самой вёрстки. Все остальное лежит в других местах Wordperss и не дублируется вместе с темой.
Доказательство:

2 шаг — добавить плагин
Нам нужно попасть в папку wp-content/plugins
. Создать там папку swith-theme
и внутри создать файл swith-theme.php
c таким содержимым:
<?
/*
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 'THEME_NAME';
}
3 шаг — пишем название темы в плагин и активируем его
Строку 'THEME_NAME'
нужно поменять на название вашей продублированой темы. У меня получилась вот такая строчка: return 'portfolio-v7.4';
Я копировал свою тему 7.3 и переименовал её на 7.4, а затем заменил название в коде.

Так нужно будет делать каждый раз.
После этого переходите в список плагинов и активируйте его в списке

4 шаг — переключаем тему для всех
Представим, что вы добавили что-то в коде и все протестировали. Теперь надо менять поставить её для всех.
Для этого нам нужно отключить плагин: «Отдельная тема для администратора"переходите в Внешний вид → Темы.
Почему это нужно делать? Когда вы поставите новую тему для себя, админка будет показывать так, якобы тема активна для всех. А как можно активировать уже активированную тему? 🙂
Когда мы отключим плагин, тема для администратора перестанет быть активной и мы сможем её активировать.
