Wordpress / PHP - 存在URL参数时加载样式表

时间:2015-07-09 19:16:20

标签: php wordpress url parameters stylesheet

希望找到一种方法,只有在存在URL参数时才能使Wordpress网站加载样式表。例如,当加载http://www.somesite.com时,它将使用主题使用的任何样式表。但是,如果使用特定的URL参数,则会调用另一个样式表。示例http://www.somesite.com?useAltCss=yes。在这种情况下,在主题样式表之后加载另一个样式表。这使我有机会仅在使用URL参数时覆盖主题样式,并且测试样式/ laylout更改而不影响公共查看。

我假设header.php需要进行编码修改。以下不是PHP语法,但让你知道我正在寻找:

<?php
    $param = ($_GET["useAltCss"]);
    if($param == 'yes') {
        <link rel="stylesheet" type="text/css" href="custom.css" />
    } else {
        // Do nothing
    }
?>

更新

看起来我原来的代码很接近我只需更改第4行:

<link rel="stylesheet" type="text/css" href="custom.css" />

为:

echo('<link rel="stylesheet" type="text/css" href="custom.css" />');

虽然这是有效的,但我想知道是否有更有效的方法来做到这一点。如果我导航到新页面来测试样式更改,我必须手动添加URL参数。如果它以某种方式锁定在custom.css样式表中可能会很棒...可能使用cookie或会话?我想知道它是如何切换开/关的。想法?

1 个答案:

答案 0 :(得分:0)

如果你只是为自己使用这个,那么我认为你的方法很好......但是 - 对于其他任何绊倒这个问题的人 - 我想强调的是,这是做书中的东西。下面建议的第二种方法是一个好的解决方案,但第一种方法只应用于非常临时的情况(在每个页面加载时打开一个会话可能是不必要的,并且会导致性能下降)。

样式表也不应手动打印(即使用<link[...]>),而是使用wp_enqueue_style()挂钩中的wp_enqueue_scripts

方法1

保持&#34;设置&#34;而不必在每个页面加载时手动键入它,您可以使用这样的会话:

您需要在发送标头之前打开会话,因此请将其放在wp-config.php

//Start the session if it isn't already
session_start();

其余部分会出现在您想要样式表的位置(最有可能在header.php中):

//Check if the parameter is set
if (isset($_GET["useAltCss"])) {
    if($_GET["useAltCss"] === 'yes') {
        //Adjust the session
        $_SESSION['useAltCss'] = true;
    } else {
        /**
         * If set to anything other than "yes", assume it's being switched
         * off, and adjust the session
         */
        $_SESSION['useAltCss'] = false;
    }
}
//Check if the session variable exists, and is currently true
if (isset($_SESSION['useAltCss']) && $_SESSION['useAltCss'] === true) {
    //And print your stylesheet
    echo '<link rel="stylesheet" type="text/css" href="custom.css" />';
}

方法2

另一个(更简单的)选项是简单地检查当前用户是否已登录并且能够编辑主题(我希望你这样做):

if (current_user_can('edit_themes')) {
    echo '<link rel="stylesheet" type="text/css" href="custom.css" />';
}

...这当然不会让你来回切换 - 除了每次登录和退出。