希望找到一种方法,只有在存在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或会话?我想知道它是如何切换开/关的。想法?
答案 0 :(得分:0)
如果你只是为自己使用这个,那么我认为你的方法很好......但是 - 对于其他任何绊倒这个问题的人 - 我想强调的是,这是不做书中的东西。下面建议的第二种方法是一个好的解决方案,但第一种方法只应用于非常临时的情况(在每个页面加载时打开一个会话可能是不必要的,并且会导致性能下降)。
样式表也不应手动打印(即使用<link[...]>
),而是使用wp_enqueue_style()
挂钩中的wp_enqueue_scripts
。
保持&#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" />';
}
另一个(更简单的)选项是简单地检查当前用户是否已登录并且能够编辑主题(我希望你这样做):
if (current_user_can('edit_themes')) {
echo '<link rel="stylesheet" type="text/css" href="custom.css" />';
}
...这当然不会让你来回切换 - 除了每次登录和退出。