Intereting Posts
Как я могу удалить JUST тег title из функции wp_head ()? Удаление изображений из галереи остается в виде вложения Комплекс WP_Query (два типа сообщений и несколько операторов) TwentyTwelve детская тема style.css? Ver = 3.8.1 Как изменить постоянную ссылку в сообщении Создание дочерней темы: CSS не загружается Штрих-код галереи – изменить размер файла изображения ссылки? (не используя полноразмерное изображение по умолчанию) Добавить выбор категории в настраиваемый тип сообщения (плагин) Скопировать настройки WordPress в другой блог ошибка в файле directorypress mysql_error () Пользовательский логотип, построенный с использованием выборочного обновления с текстом Создайте собственный шаблон страницы внутри моего плагина wordpress Как просмотреть сообщение с пользовательскими таксономами, как категория или теги в одном шаблоне? Перенаправить общедоступный сайт в другой, но разрешить администраторам доступ к старому сайту Как показать настраиваемое поле в специальных пользовательских сообщениях типа сообщений только при заполнении

Изменение цветовой схемы на основе URL-адреса

Я борюсь со следующим:

$themeId = ""; $pathname = get_site_url(); if($pathname == 'domain2.com'){ $themeId = "gold";} else{ $themeId = "blue";} wp_register_style('theme-skin',THEMEURI . '/css/'.get_option($themeId).'-style.css', 3 , false, 'all'); 

Так что, в основном, у меня есть домен domain1.com . Он использует синюю тему для wordpress и, следовательно, синюю таблицу стилей, которая представляет собой: blue-style.css.

Теперь у меня есть другое доменное имя domain2.com, которое использует ту же самую установку WordPress. Поэтому я хочу получить текущий url в адресной строке, и на основе этого измените цветовую схему, blue для domain1.com и gold для domain2.com .

Но мой код выше не работает, он продолжает использовать синий цвет, независимо от того, какой URL-адрес посетили. Что я здесь делаю неправильно?

благодаря

UPDATE : исходный код по умолчанию

theme.css

  if(get_option(THEMESLUG."_17_style")){ wp_register_style('theme-skin',THEMEURI . '/css/'.get_option( THEMESLUG."_17_style").'-style.css', 3 , false, 'all'); //dark skin } 

Где указаны цвета: styling-options.php

 array( "name" => __("Theme Style",'rt_theme_admin'), "desc" => __("Please choose a style for your theme.",'rt_theme_admin'), "id" => THEMESLUG."_17_style", "options" => array( "blue" => "Blue Style", "purple" => "Purple Style", "orange" => "Orange Style", "brown" => "Brown Style", "rose" => "Rose Style", "green" => "Green Style", "grey" => "Grey Style", "gold" => "Gold Style", ), "default" => "blue", "type" => "select"), 

РЕШИТЬ

Всем привет. Я сделал следующее, и теперь он работает:

 if ( 'domain2.com' === $_SERVER['HTTP_HOST'] ) { wp_register_style('theme-skin',THEMEURI . '/css/gold-style.css', 3 , false, 'all'); } else { wp_register_style('theme-skin',THEMEURI . '/css/blue-style.css', 3 , false, 'all'); } 

Заблуждение

get_site_url() извлекает параметр site_url из базы данных , как указано в разделе « Общие настройки» в административном бэкэнде / wp-admin.

Если это действительно

точно такая же установка WordPress

он всегда будет возвращать одно и то же , независимо от того, доступно ли местоположение через одну, две или пятьсот доменов.

Возможно, вы захотите проверить $_SERVER['HTTP_HOST'] .

 if ( 'domain2.com' === $_SERVER['HTTP_HOST'] ) { $themeId = "gold"; } else { $themeId = "blue"; } 

Реальный вуду

Пока ваше состояние работает только для первоначального посещения вашего сайта.
Если вам небезразличен какой-то реальный обман, и вы хотите, чтобы посетитель продолжал просматривать вашу страницу в начальном домене: ознакомьтесь с этим отличным ответом от toscho .

Если вы ссылаетесь на страницу Codex для get_site_url() :

Возвращает параметр «siteurl» с соответствующим протоколом «https», если is_ssl () и «http» в противном случае.

поэтому вы должны проверить соответствие домена с протоколом, http://domain2.com

get_site_url отобразит полный URL-адрес – например, http://domain2.com . Вы можете это увидеть, просто сбросив выход и посмотрев на него. Вы пытаетесь сопоставить это с domain2.com . Очевидно, что это не соответствует и никогда не будет.

Попробуйте использовать:

  if($pathname == 'http://domain2.com'){ $themeId = "gold";} else{ $themeId = "blue";} 

Но это может сломаться, если SSL включен, или если он включен в будущем. Возможно, это будет работать лучше:

 $pathname = parse_url(get_site_url()); echo $pathname['host']; if($pathname['host'] == 'domain2.com'){ $themeId = "gold"; } else { $themeId = "blue"; }