用户首次登录时更改密码

时间:2012-03-25 作者:PrivateUser

我有一个“更改密码”页面。

当用户login first time 使用wordpress生成的密码?

谢谢

3 个回复
最合适的回答,由SO网友:xaedes 整理而成

也许这对你有帮助?

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”也会重置。

SO网友:Milo

user_registeradd user metadata 存储“尚未登录”标志。钩wp_login 并检查元数据,如果存在,则删除并重定向,否则执行正常登录行为。

SO网友:RafaSashi

除了米洛的回答之外:

    function after_user_register( $user_id ){

        // the new user just registered but never logged in yet
        add_user_meta($user_id, "has_not_logged_in_yet", "true", true);
    }

    add_action( \'user_register\', \'after_user_register\', 10, 1 );

    function after_user_loggedin(){

        if(is_user_logged_in()){

            $user_id=get_current_user_id();

            $user_meta=get_user_meta($user_id);

            if(isset($user_meta[\'has_not_logged_in_yet\'])){

                delete_user_meta($user_id, "has_not_logged_in_yet");

                //do something else
            }
        }
    }

    add_action( \'init\', \'after_user_loggedin\');

Edit (FYI)

wp_login 在用户元检索方面表现不佳。有时会返回FALSE 使用用户loggedin。

结束

相关推荐

moving server can not login

我在win7系统中设计我的网站,今天在租用服务器之前,我将我的博客从win7移动到另一台安装了CentOS 5.5的计算机上进行最后一次测试,我参考了这篇文章http://codex.wordpress.org/Moving_WordPress正在从移动我的网站d:/www/ 到/var/www/html, 而且我的网站运行良好,所有的帖子、评论都没有问题。但我不能登录我的网站。我有两个测试帐户,一个是管理员,另一个是普通用户,两个帐户都不能登录。当我填写用户名和密码时,单击登录按钮,页面将刷新,不执行任