也许这对你有帮助?
https://stackoverflow.com/questions/4267285/redirect-user-after-first-login-in-wordpress
他似乎有一个类似的问题,一年前就解决了。
他与你不同的做法是在注册48小时后重定向。也许这就够了?
如果没有,我会按照你的方式去做。
---编辑
好的,我刚刚制作了一个插件,它完全符合您的要求:
/*
Plugin Name: Redirect Passwort
Plugin URI: TODO
Description: TODO
Author: xaeDes
Version: 0.1
Author URI: TODO
License: GPL2
*/
function redirect_passwort_profile_update($user_id, $old_user_data) {
$user = new WP_User( $user_id );
if( $user->data->user_pass != $old_user_data->user_pass) {
//password has changed
update_metadata("user",$user_id,"changed_password",true);
}
}
add_action("profile_update", "redirect_passwort_profile_update", 10, 2);
function redirect_passwort_login_redirect($redirect_to, $url_redirect_to = \'\', $user = null) {
if( isset($user->ID) ) {
$changed_password = get_metadata("user", $user->ID, "changed_password",true);
if( $changed_password != true ) {
return get_bloginfo(\'url\') . "/change-your-password-dude/";
} else {
return $redirect_to;
}
}
}
add_filter(\'login_redirect\', \'redirect_passwort_login_redirect\',10,3);
function redirect_passwort_password_reset( $user ) {
//password has been reset to a random one. so the changed_password meta data should be reset as well
if( isset($user->ID) ) {
delete_metadata("user", $user->ID, "changed_password");
}
}
add_action(\'password_reset\', \'redirect_passwort_password_reset\');
它向更改密码的用户添加用户元数据“changed\\u password”。
登录时,它会检查是否设置了用户元数据“changed\\u password”,如果未设置,则会重定向(因此用户甚至没有更改过一次密码)。
当用户密码重置为随机密码时,用户元数据“changed\\u password”也会重置。