首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cookie不是通过wordpress插件代码设置的。

问Cookie不是通过wordpress插件代码设置的。
EN

Stack Overflow用户
提问于 2015-11-12 12:43:32
回答 1查看 849关注 0票数 0

我正在写一个插件,在那里我设置了一个cookie。当我使用php方法设置cookie时,它会显示警告。

警告:无法修改标题信息-已由(输出从

如果我使用wordpress操作,设置cookie时它不起作用。我已经在我的主题functions.php文件中使用了它可以正常工作,但不能在插件代码中工作。

以下是代码示例:

使用php方法

代码语言:javascript
复制
setcookie( 'sm_js_cookie', 1, time()+3600*24*100,'/');

使用wordpres操作:

代码语言:javascript
复制
function set_newuser_cookie() {

    setcookie( 'sm_js_cookie', $_SERVER['REMOTE_ADDR'], time()+3600*24*100,'/');

}

add_action( 'init', 'set_newuser_cookie');

请帮我找出解决办法。

EN

回答 1

Stack Overflow用户

发布于 2015-11-12 19:16:47

在注释中来回重复之后,结果发现您正在尝试从一个短代码中调用setcookie (您应该在您的问题中提到这一点)。

这通常不起作用,因为当分析了一个短代码时,一些输出已经发送到浏览器,因此您不能使用setcookie函数。

您已经知道的替代方法是在setcookie操作的回调函数中使用init。但是,您通常可以一直连接到template_redirect(我相信这是最后一个操作,或者是发送标头的最后一个操作)。你能说明你想达到的目标吗?这样我就能给你适当的建议了吗?

没有任何其他细节,我可以给您提供下面的示例,说明如何根据用户当前正在查看的页面/帖子中是否存在该短代码来设置cookie。

代码语言:javascript
复制
<?php
function set_newuser_cookie(){
    // Check to see if we're looking at a single post, page or attachment
    if ( is_singular() ) {
        $_post = get_post();
        // See if the content of the current post object has the shortcode
        if ( has_shortcode( $_post->post_content, 'js_conditions_script' ) ) {
            setcookie( 'sm_js_cookie', 1, time()+3600*24*100,'/');
        }
    }
}
add_action( 'template_redirect', 'set_newuser_cookie' );

我们所做的就是连接到template_redirect操作(主要的WordPress查询已经执行,因此我们知道我们在查看哪个页面)。我们检查以确保查看单个post (包括自定义post类型)、页面或附件,然后检查它是否包含短代码[js_conditions_script]。如果是的话,我们就设置曲奇。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33671680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档