如何让所有WordPress用户密码立即失效?

时间:2012-04-24 作者:Mo Beigi

所以我拥有一个文章目录网站,最近很多机器人已经注册并开始发布垃圾邮件。(我在发布前批准帖子)

我现在已经在用户注册页面中添加了验证码,但对于已经注册的用户,我想让他们的密码过期,因此他们必须设置新密码,而机器人显然无法做到这一点。

我尝试了多个插件,但都没有成功。我真的不知道该怎么办。我有超过1800个用户,所以逐个检查他们是不可能的。

非常感谢!

非常感谢。

1 个回复
SO网友:William

借用的一些基础功能http://wordpress.org/extend/plugins/auto-expire-passwords/ , 并进行了调整。未经测试,但符合您的要求,所以YMMV。

function custom_forced_password_reset( $user ) {
    update_user_meta( $user->ID, \'password_was_force_reset\', true );
}
add_action( \'password_reset\', \'custom_forced_password_reset\' );    

// Ensure all new register users have the flag set
function custom_forced_password_user_register($user_id){
    update_user_meta( $user_id, \'password_was_force_reset\', true );
}
add_action( \'user_register\', \'custom_forced_password_user_register\', 10, 1 );

function custom_log_in_check( $user, $username, $password ) {
    if ( is_wp_error( $user ) )
        return $user;

    // Check we\'re dealing with a WP_User object
    if ( ! is_a( $user, \'WP_User\' ) )
        return $user;

    // This is a log in which would normally be succesful
    $user_id = $user->data->ID;


    $reset = get_user_meta( $user_id, \'password_was_force_reset\', false );
    if ( empty( $reset ) || $reset == false ) {
            $user = new WP_Error( \'authentication_failed\', sprintf(\'<strong>ERROR</strong>: You must <a href="%s">reset your password</a>.\', site_url( \'wp-login.php?action=lostpassword\', \'login\' ) ) );
    }

    return $user;
}
add_filter( \'authenticate\', \'custom_log_in_check\', 30, 3 );

结束