根据访问的url更改配色方案

时间:2013-07-28 作者:DextrousDave

我正在与以下问题作斗争:

    $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使用蓝色主题,因此使用蓝色样式表:蓝色样式。css。

现在,我有了另一个域名,domain2。com,它使用完全相同的wordpress安装。所以我想在地址栏中获取当前url,并在此基础上更改颜色方案,blue 对于domain1.comgold 对于domain2.com.

但我上面的代码not 工作,它一直使用蓝色,无论访问哪个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"), 
<小时>

SOLVED

大家好。我做了以下工作,现在它可以工作了:

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\'); 

}

3 个回复
最合适的回答,由SO网友:Johannes Pille 整理而成

误解

get_site_url() 检索site_url 选项,如管理后端/wp admin中的“常规设置”下的设置。

如果这确实是

完全相同的wordpress安装

它将始终返回相同的内容,无论该位置是否可以通过一个、两个或五百个域访问。

您可能需要检查$_SERVER[\'HTTP_HOST\'] 相反

if ( \'domain2.com\' === $_SERVER[\'HTTP_HOST\'] ) {
    $themeId =  "gold";
} else { 
    $themeId = "blue";
}
到目前为止,你的状况只在初次访问你的网站时有效
您是否应该关心一些真正的骗局,并希望访问者在初始域下继续浏览您的页面:签出this excellent answer by toscho.

SO网友:Milo

如果您参考the Codex page for get_site_url():

返回具有适当协议的“siteurl”选项,如果为\\u ssl(),则返回“https”,否则返回“http”。

因此,您应该使用协议检查域的匹配,http://domain2.com

SO网友:s_ha_dum

get_site_url 将显示完整的URL,例如,http://domain2.com. 您只需转储输出并查看它即可看到这一点。你正试图与domain2.com. 显然,它不匹配,也永远不会匹配。

尝试使用:

    if($pathname == \'http://domain2.com\'){
        $themeId =  "gold";}
    else{ 
        $themeId = "blue";}
但如果启用SSL,或者如果将来启用SSL,则可能会中断。也许这样会更好:

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

结束

相关推荐

如何将footer.php重置为其原始状态?(主题:折纸)

我不小心从页脚中删除了一些代码。php试图去掉“Theme By Origami”的页脚,现在页脚全乱了。如何将其重置为原始状态?我觉得自己太笨了,我应该在删除之前备份一下,我太粗心了。。我的网站:http://www.agnesphotoandfilm.co.uk/我的主题:折纸请帮忙