php - Wordpress 设置 Cookie 以更改样式表
问题描述
我一直在尝试设置一个 cookie,它将根据单击按钮更改主题的样式表。我不知道为什么它不起作用,请有人解释我哪里出错了?
这些是我的按钮(header.php):
<a href="?style=as1" >AS1</a>
<a href="?style=as2" >AS2</a>
<a href="?style=as3" >AS3</a>
这是我的样式表(header.php):
<link rel="stylesheet" type="text/css" media="all" id="accessible-stylesheet" href="<?php echo get_template_directory_uri(); ?>/<?php echo $stylesheet; ?>" />
这是我的函数(functions.php):
// Accessible Stylesheet Cookie
$stylesheet = "as1";
if ( isset($_GET['style']) ) {
if ($_GET['style'] == "as2") {
$stylesheet = "as2";
} else if ($_GET['style'] == "as3") {
$stylesheet = "as3";
}
setcookie("style","$stylesheet","3600*7");
}
$as1stylesheet = 'css/colors-as1.css';
$as2stylesheet = 'css/colors-as2.css';
$as3stylesheet = 'css/colors-as3.css';
$stylesheet = $as1stylesheet;
if ( isset($_COOKIE['stylesheet'] ) ) {
if ( $_COOKIE['stylesheet'] == "as2" ) {
$stylesheet = $as2stylesheet;
} else if ( $_COOKIE['stylesheet'] == "as3" ) {
$stylesheet = $as3stylesheet;
}
}
我没有错误,我无法弄清楚我哪里出错了。样式表根本没有设置。
解决方案
您的 PHP 代码中有一些错误,并且错误地使用了变量。这似乎更简洁。
您不能在同一页面上设置和调用超全局 $_COOKIE。这是手册的摘录... https://www.php.net/manual/en/function.setcookie.php
一旦设置了 cookie,就可以在下一页加载时使用 $_COOKIE 数组访问它们。
$stylesheet = "as1";
// Check for cookie and set one if it's not set
if (!isset($_COOKIE['style'])) setcookie('style', $stylesheet, time() + (3600*7));
// If there is a cookie, the stylesheet is from the cookie
if ( isset($_COOKIE['style'] ) ) {
$stylesheet = $_COOKIE['style'];
}
// If there's a get parameter set the cookie to it (for next page load), and set the stylesheet for this page load
if ( isset($_GET['style']) ) {
$stylesheet = $_GET['style'];
setcookie('style', $stylesheet, time() + (3600*7));
}
<link rel="stylesheet" type="text/css" media="all" id="accessible-stylesheet" href="<?php echo get_template_directory_uri(); ?>/css/colors-<?php echo $stylesheet; ?>.css" />
推荐阅读
- ssl - Kubernetes Ingress 不适用于 https/ssl
- excel - COUNTIF 多列
- pointers - 带有指向非 objectId 字段的指针的 Parse-Platform 查询始终返回 null
- android - 如何从 API 29 中的图库中获取所有图像?
- swift - 如果我使用 randomElement(),如何从 Swift 中的结构返回 2 个值?
- python - python中的时间和随机模块
- java - Java:从 jUnit 调用主要实现的接口方法 - 测试
- javascript - 根据预先选择的下拉值隐藏和显示文件输入
- python - 为内容提供迭代器的类
- python - 如何在 Ubuntu 上安装 pgadmin4