如何让Cookie出现在整个网站上,而不是出现在特定的页面/

时间:2015-12-05 作者:Artem

所以我有一个想法,制作一个在css文件之间交换的按钮,以便做一些随机的事情,比如制作2个网站用户可以交换的背景。

我不知道该怎么做,所以我去谷歌看了一些php指南,我在做一些修改的同时复制了大部分代码。

这就是我的结局:

关于函数。php文件我得到了这个:

function style_1_or_2(){

    $style = isset($_GET[\'style\']) && in_array($_GET[\'style\'], array(\'style2\', \'normal\')) ?  $_GET[\'style\'] : (isset($_COOKIE[\'style\']) && in_array($_COOKIE[\'style\'], array(\'style2\', \'normal\'))  ? $_COOKIE[\'style\'] : \'default_case\');

    if ($style == \'style2\'){
        function the_other_css(){
            wp_enqueue_style(\'the_other_css\', get_template_directory_uri() . \'/style2.css\');
            setcookie(\'style\', \'style2\', time()+31536000);
        }
        add_action(\'wp_enqueue_scripts\', \'the_other_css\', 999);
    } else {
        function default_css(){
            wp_enqueue_style(\'default_css\', get_template_directory_uri() . \'/style.css\');
            setcookie(\'style\', \'normal\', time()+31536000);
        }
        add_action(\'wp_enqueue_scripts\', \'default_css\', 999);
    }
}
add_action(\'init\', \'style_1_or_2\');
我还在侧菜单上添加了两个按钮

<a href="?style=normal">style1</a>
<a href="?style=style2">style2</a>
现在,它在大多数情况下都可以正常工作,但是,它有点特定于页面。例如,如果我单击主页上的“style2”按钮,我可以刷新它,只要我留在主页上,我仍然会得到“style2”文件。但是,一旦我转到网站上的任何其他页面,我将获得默认样式,即“style1”,我必须再次单击该页面上的“style2”按钮,并且除了主页和我刚才所在的页面之外,我还会在任何其他页面上获得默认样式“style1”,并在那里单击它。

我试图做一些事情来修复它,但我有点笨,所以我没有真正成功,现在我在这里寻求帮助。

(对不起,我的英语不好,不是我的主要语言)

1 个回复
SO网友:Adam

尝试设置路径和域,

setcookie(\'style\', \'style2\', time()+31536000, \'/\', \'.example.com\');

代替.example.com 使用您的站点主机名。

进一步阅读:http://php.net/manual/en/function.setcookie.php

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请