web-dev-qa-db-ja.com

複数の登録ユーザーに同じEメールを許可するにはどうすればいいですか?

ユーザーがサイトに登録して、電子メールが既に登録されている場合にスローされるエラー[WPを無視させる - "この電子メールは既に登録されています。別のものを選択してください。"

私自身のプラグインを書いてみましたが、うまくいきません。

if($errors['field'.$field->id] == 'This email is already registered, please choose another one.')
unset($errors['field'.$field->id]);

この上の任意の助けは大歓迎です。

PS。

i)登録に同じEメールを許可するのは理想的ではないが、同じ家族が異なるユーザー名で同じ家族Eメールで登録できるようにする別の解決策は見当たらない。

ii)前の質問に対する答えは、単一のサイトではうまくいきませんでした。

add_filter('pre_user_email', 'skip_email_exist');

これが私がシングルサイトソリューションのためにこの質問をしなければならなかった理由です。

1
Michael

コードとデータベースの構造を大幅に変更しなければ、残念ながらこれは不可能です。WordPressはユーザーの電子メールをデータベースの "UNIQUE"行に格納するからです。ユーザーが作成されないため、単にエラーメッセージを設定解除してもこの問題は解決されません。

4

私はあなたが既にwp-includes/user.phpを見ていたと思います。

最も簡単な方法:1691行目をコメントアウト(EDIT : THIS METHOD IS NOT RECOMMENDED AS IT'S EDITING CORE FILES AND ISN'T FUTURE-PROOF AND SHOULD BE CONSIDERED A LAST RESORT

別の方法:Line 1690 users.phpには以下があります。

elseif ( email_exists( $user_email ) ) {
        $errors->add( 'email_exists', __( '<strong>ERROR</strong>: This email is already registered, please choose another one.' ) );
    }

あなたのコード例では、あなたは$errors['field'.$field->id]を使っています$errors['field'.$field->id]が存在する/設定されているかどうか確認しましたか?ここで使用する正しい構文はわかりませんが、$errors['email_exists']のようにチェックしてから設定解除することができます。

HTH

1
TomC