我想实现一个自定义注销功能,该功能仅在满足条件时运行。相反,无论条件是否属实,它都会将我返回主页
下面是应该注销的代码:
function no_cookie() {
global $noCookiesLeft;
if($noCookiesLeft) {
wp_redirect("mysite.com/custom logout");
exit;
}
}
add_action(\'wp_logout\',\'no_cookie\',10,2);
下面是触发此操作的代码:
if($cookie_count >= 3) {
wp_delete_user($id);
$noCookiesLeft = true;
wp_logout();
}
noCookiesLeft是一个全局变量,因为我还没有找到任何其他方法来做到这一点,而谷歌让我失望。
编辑:
function login_cookie($user_login, $user) {
global $wpdb;
global $noCookiesLeft;
$id = $user->ID;
if(!isset($_COOKIE[\'userCookie\'])) {
if(in_array(\'administrator\', $user->roles))
$wpdb->delete(\'wp_cookies\',[\'user_id\'=>$id]);
$cookie_count = $wpdb->get_var("SELECT COUNT(*) FROM wp_cookies WHERE user_id=".$id."");
if($cookie_count >= 3) {
wp_delete_user($id);
}
else {
$value = md5($id);;
setcookie(\'userCookie\', $value, time()+360000*24*100, "", "",false);
$wpdb->insert("wp_cookies",[
\'user_id\'=>$id,
\'cookie_value\'=>$value
],
[
\'%d\',
\'%s\'
]);
}
}
}
add_action(\'wp_login\',\'login_cookie\',10,2);
function no_cookie() {
wp_redirect("/error);
exit;
}
}
add_action(\'delete_user\',\'no_cookie\',10,2);