web-dev-qa-db-ja.com

即座にすべてのワードプレスのユーザーパスワードを期限切れにするには?

それで、私は記事ディレクトリウェブサイトを所有していて、最近たくさんのボットがサインアップしてスパムを投稿し始めました。 (掲載前に投稿を承認します)

今ユーザー登録ページにキャプチャを追加しましたが、すでに登録されているユーザーのために私は彼らのパスワードを期限切れにしたいので彼らは新しいものを設定しなければなりません。

私は複数のプラグインを試してみたが成功しなかった。どうしたらいいかわかりません。私は1800人以上のユーザーを持っているので、それらを1つずつ通過することは選択肢ではありません。

これは本当にありがたいです!

ありがとうございました!

2
Mohammad G

いくつかの基本的な機能は 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 );
1
William