创建一个存储数据全站点问题的cookie

时间:2017-11-21 08:54:27

标签: wordpress cookies path

我正在使用此脚本尝试设置div的可见性样式并将其存储为站点范围内的cookie。我的理解是path = /应该将cookie设置为存储在根目录,从而可用于所有页面 - 将值传递给其他页面,以保持div的可见性,可见或隐藏,具体取决于用户偏爱。但是,检查输出时,似乎cookie只是按页面存储'。我错过了什么?我已将脚本放在标题中,并将其加载到我的wp主题的每个自定义帖子/页面上。 (省略) - 页面左上方有一个切换按钮,显示/隐藏评论。

// Placed above </head> tag on my header-webmockups.php file
<script type="text/javascript">
    $( function () {
        var toggle = $( '.toggle' );
        var comments = toggle.find( '.comments' );
        if ( $.cookie( 'divState' ) == 'visible' )
            comments.show();
        else
            comments.hide();
        toggle.find( 'a' ).click( function () {
            if ( comments.is( ':visible' ) )
                $.cookie( 'divState', 'hidden' );
            else
                $.cookie( 'divState', 'visible' );
            comments.toggle();
        } );
    } );
    $.cookie( "divState", 1, {
        expires: 10000
    } );
</script>

// Placed at the top of my comments.php loop (toggle div closes after page content)
<div class="toggle"><a>Show/Hide Comments</a>

// Placed after <?php wp_head(); ?> of post's custom header.php
<?php wp_enqueue_script("jquery-cookie", get_stylesheet_directory_uri().'/js/lib/jquery.cookie.js', array( 'jquery' ), '0'); ?>

1 个答案:

答案 0 :(得分:0)

您需要在Cookie中添加过期日期。 例如

$.cookie("test", 1, { expires : 10000 });

正如我从您的网址和代码中看到的那样,您尚未设置它,它仅适用于当前会话。

enter image description here

因此,毕竟你的脚本块应如下所示:(完全删除当前块并粘贴此块)

<script type="text/javascript">
        jQuery( function ($) {
            var toggle = $( '.toggle' );
            var comments = toggle.find( '.comments' );
            if ( $.cookie( 'divState' ) == 'visible' )
                comments.show();
            else
                comments.hide();
            toggle.find( 'a' ).click( function () {
                if ( comments.is( ':visible' ) )
                    $.cookie( 'divState', 'hidden', {expires: 10000, path: '/'} );
                else
                    $.cookie( 'divState', 'visible', {expires: 10000, path: '/'} );
                comments.toggle();
            } );
        } );
    </script>