setcookie()需要手动重新加载页面才能正常工作

时间:2018-02-21 12:55:56

标签: php wordpress if-statement cookies shortcode

我已经设置了一个隐藏特定短代码内容的cookie。我使用URL(http://www.yourwebsite.com/?EmailSubscriber=true)来触发cookie并将其设置为" true"。特定代码工作正常,但需要重新加载才能使条件生效。

这是我的代码

if ($_GET['EmailSubscriber'] == 'true') {
    setcookie('EmailSubscriber', 'true', time() + (86400 * 30 * 6), "/");
} 

这些是我制作的短代码

function EmailSubscriber_function( $atts, $content = null ) {
    $atts = shortcode_atts(
        array(
            'class' => '',
        ), $atts, 'EmailSubscriber' );  

        if(isset($_COOKIE['EmailSubscriber'])) {
            return '<div id="emailSubscriber" style="padding:20px 0;"><div class="darkSec"><div class="cck tve_clearfix tve_empty_dropzone">' . do_shortcode($content) . '</div></div></div>';
        }
}
add_shortcode( 'EmailSubscriber', 'EmailSubscriber_function' );

function EmailSubscriber_function( $atts, $content = null ) {
    $atts = shortcode_atts(
        array(
            'class' => '',
        ), $atts, 'EmailSubscriber' );  

        if(isset($_COOKIE['EmailSubscriber'])) {
            return '<div id="emailSubscriber" style="padding:20px 0;"><div class="darkSec"><div class="cck tve_clearfix tve_empty_dropzone">' . do_shortcode($content) . '</div></div></div>';
        }
}
add_shortcode( 'EmailSubscriber', 'EmailSubscriber_function' );

我只需输入此网址http://www.yourwebsite.com/?EmailSubscriber=true,然后在第一次加载页面时触发条件并显示/隐藏必要的内容。

1 个答案:

答案 0 :(得分:2)

如果您想立即使用cookie,您也可以使用会话进行检查,或者只是手动保存您的cookie:

if ($_GET['EmailSubscriber'] == 'true') {
    setcookie('EmailSubscriber', 'true', time() + (86400 * 30 * 6), "/");
    $_COOKIE["EmailSubscriber"] = 'true';
}

通过此操作$ _COOKIE [“EmailSubscriber”] ='true';你不会真的保存cookie,但是你的脚本会认为你这样做了。