WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

Выбор (назначение определение) темы через mu-plugins

есть ли возможность установить, т.е. назначить, выбрать тему сайта через PHP функцию и вставить её в mu-plugins или wp-config ??

  • интересует именно это PHP решение, альтернативы не нужны.

есть у меня 3 сайта, полностью одинаковые, 1 оригинал, остальные для теста редакторов, тем и плагинов, периодически в 2-х тестовых обновляю БД (в тупую дублирую), и надоело каждый раз переключать тему. Знаю что можно колдовать с таблицами в бд, просто дампить часть базы, использовать плагины, сливать БД воедино и тд , но так не хочу.


походу нашел решение, но еще не тестировал

// для плагина
add_filter( 'stylesheet', 'switch_ma_theme' );
add_filter( 'template',   'switch_ma_theme' );

function switch_ma_theme()
{
	// Return the theme directory name
	return SOME_FLAG ? 'theme-1' : 'theme-2';
}

// еще одно решение wp-config.php 
define('TEMPLATEPATH', '/absolute/path/to/wp-content/themes/active-theme-or-parent-theme');
define('STYLESHEETPATH', '/absolute/path/to/wp-content/themes/active-theme-or-child-theme');

1 полная дискуссия

2 тема немного по круче

Заметки к вопросу:
kaliyan 5.2 года назад

Т.е. при смене темы на одном сайте, должна меняться тема на всех 3-х сайтах? Сайты связаны сетью?

kolshix 5.2 года назад

нет, сайты никак не связаны, на каждом из сайтов своя независимая тема. Просто хочу чтоб при переносе базы данных с одного сайта на другой, mu-plugins автоматически устанавливал нужную тему не взирая на настройки БД.

kaliyan 5.2 года назад

Я ниже прикинул примерный алгоритм. Только там не меняем тему функцией switch_theme(), а сохраняем в БД название нужной темы. При загрузке страниц, фильтруем 'stylesheet' и 'template', где берем название из БД, делаем всякие проверки (например, есть ли указанная тема) и возвращаем нужное название.

kolshix 5.2 года назад

да я сначала написал, потом тоже подумал, такой вариант тоже приемлем, сделать php проверку на соответствие название темы , и если тема не то в писать нужную в БД ...

0
kolshix
5.2 года назад 779
  • 0

    Криво и сыро:
    При after_setup_theme копируем папку темы на все сайты. CURL-ом (wp_remote_post) пингуем нужные сайты с нужными параметрами, например switch_theme=название_темы.
    Если есть $_POST['switch_theme'] проверяем есть ли тема, какая сейчас активна, и с помощью switch_theme() меняем тему. Все это дело пихаем в му-плагин, ставим на все сайты. Нужно не забыть при after_setup_theme проверять наличие $_POST['switch_theme'], чтобы не делались лишние curl-запросы.

    Если сайты в сети, тут вроде проще. Получаем все blog_id (wp_get_sites), проходимся по всем, переключаясь на каждый без редиректа (switch_to_blog), выполняем switch_theme(). Походу нужно восстановить текущий блог (restore_current_blog) после каждого switch_to_blog.

    Короче нужно тестить, однозначно рабочий вариант вряд ли у кого-то есть...

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