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

标签 wordpress session cookies admin

嗨,我是 wordpress 的新手。

我对此进行了很多研究,但没有成功。我想在注销前将 cookie 值设置为 NULL,并在管理员登录后设置自定义值。

所以我把下面的代码放在 wp-includes/puggable.php => 函数 wp_set_auth_cookie 中
setcookie("cookieName", '', time() + (1 * 60) , true);echo "<script>console.log('Cookie must set null')</script>";
但是即使在登录注销后也没有成功 cookie 值保持不变。

最佳答案

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

您需要做的是使用 wp_login wp_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
  }
}

请注意,正如 diziaq 在他的回答中指出的那样,您使用了错误的 setcookie 函数。

并在注销时删除 cookie:
add_action('wp_logout', 'remove_custom_cookie_admin');
function remove_custom_cookie_admin() {
  setcookie('your_cookie_name', '', time() - 3600);
}

与 diziaq 指出的一样,您需要删除 cookie - 您不能将其设置为 NULL

关于wordpress - 在注销前和管理员登录后设置 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33256109/

相关文章:

php - 在纯文本段落之间放置广告

javascript - 我如何从 Meteor 中的服务器获取浏览器 cookie 以进行 session 处理?

ajax - 为什么 AJAX 请求返回后浏览器不设置 cookie?

php - 在 WordPress 主题中使用自定义类

php - 为 foreach() 提供的参数无效..Wordpress

wordpress - fontawesome 图标包在没有 pro 的情况下非法使用?

java - 对多个应用程序使用同一个 session

php - session_regenerate_id()后无法存储session数据;

python - sqlalchemy、postgresql 和关系卡在 "idle in transaction"

javascript - 如何从浏览器获取从另一个应用程序删除的 cookie