仅为登录的客户/用户(非管理员)在WordPress中设置自定义Cookie

时间:2021-06-09 作者:baazigar

我只想为登录过的客户创建一个具有自定义名称的自定义cookie。应该在他们成功登录后创建。应在他们完全注销后将其删除。我正在使用下面的代码。由于某种原因,它不起作用。有人能发光吗?

    // To Add Cookie
add_action(\'wp_login\', \'add_custom_cookie\');
function add_custom_cookie() {
  if(is_user_logged_in()) {
    setcookie(\'cookie_name\', \'cookie value\');
  }
}

// To Remove Cookie
add_action(\'wp_logout\', \'remove_custom_cookie\');
function remove_custom_cookie() {
  setcookie(\'cookie_name\', \'cookie value\');
}

编辑:使用上述代码,根本不会创建Cookie。顺便说一句,我可以使用setcookie()手动创建cookie,它们可以工作。但是,在代码中它不会。

1 个回复
SO网友:Paul G.

有一些事情需要调整。下面的代码可以满足您的需要。

cookie的设置不应查询用户是否登录。不能指望它会回来true 在登录请求时。仅仅依靠wp_login 钩子以确保用户正在登录WEEK_IN_SECONDS. 您可以通过替换WEEK_IN_SECONDS 你希望它持续一段时间(秒)

  • Important: 确保将其添加到functions.php 或者任何您可以确保在处理登录请求之前及时执行的地方
  • add_action( \'wp_login\', \'add_custom_cookie\' );
    function add_custom_cookie() {
        setcookie( \'cookie_name\', \'cookie value\', time()+WEEK_IN_SECONDS );
    }
    
    // To Remove Cookie
    add_action( \'wp_logout\', \'remove_custom_cookie\' );
    function remove_custom_cookie() {
        setcookie( \'cookie_name\', \'\', -1000000 );
    }
    

    相关推荐

    Cookies in template

    我需要根据cookies只显示一次页面的某些部分。主要问题是我只能在插件中设置cookie,挂起init操作。我已经读了20页的谷歌,这个网站,问了2个论坛,但我仍然有这个问题。任何帮助都将不胜感激!