在注销前和管理员登录后设置cookie

Jay*_*dya 2 cookies wordpress session admin

嗨,我是wordpress的新手.

我对此研究很多,但没有成功.我希望在注销之前将cookie值设置为NULL,并在管理员登录后设置自定义值.

所以我把下面的代码放在函数wp_set_auth_cookie中的wp-includes/puggable.php =>中

setcookie("cookieName", '', time() + (1 * 60) , true);

echo "<script>console.log('Cookie must set null')</script>";

但是,即使登录注销后,cookie值也没有成功.

var*_*ard 7

永远不要编辑Wordpress核心文件!如果你有一天更新Wordpress(并且你想要,为了解决安全问题),你的所有修改都将丢失.

您需要做的是使用wp_loginwp_logout操作.您附加了这两个动作函数add_action,因此它们将在这些事件上触发.这些函数和add_action调用发生在主题的functions.php文件中.

因此在functions.php中,添加此项以在登录时设置cookie(仅限管理员):

add_action('wp_login', 'add_custom_cookie_admin');
function add_custom_cookie_admin() {
  if(is_admin()) {
    setcookie('your_cookie_name', 'cookie value', time() + 86400, '/'); // expire in a day
  }
}
Run Code Online (Sandbox Code Playgroud)

请注意,正如diziaq在他的回答中指出的那样,你使用了错误的setcookie功能.

并在注销时删除cookie:

add_action('wp_logout', 'remove_custom_cookie_admin');
function remove_custom_cookie_admin() {
  setcookie('your_cookie_name', '', time() - 3600);
}
Run Code Online (Sandbox Code Playgroud)

与diziaq指出的相同,您需要删除cookie - 您无法将其设置为NULL.