2017-08-01 5 views
0

私は以下のコードを変更する際に助けが必要です。私はメンバーシップのために私のWordpressサイトでUltimate Memberプラグインを使用しています。自分の組織内の人々だけがサイトに登録できるようにしたい(私の部署は自分の電子メールアドレスに異なるドメインを使用している、それは頭痛で、その中に入りたくない)。現在、@ company1.comからの電子メールを自動的に検証しますが、自動検証を実行するには、そのコードに最大10個の電子メールアドレスを追加する必要があります。基本的に、電子メールアドレスがリストされていない人は、自動的にサイトのメンバーシップを拒否されます。アルティメット会員プラグインによる電子メールの確認

add_action('um_before_new_user_register', 'require_google_email_for_signup'); 
function require_google_email_for_signup($args) { 
    extract($args); 
    if (!strstr($user_email, '@company1.com')) 
     exit(wp_redirect(add_query_arg('err', 'you_must_have_googlemail'))); 
} 

答えて

0

このコードを使用します。

<?php 
add_action('um_before_new_user_register', 'require_google_email_for_signup'); 
function require_google_email_for_signup($args) { 
    extract($args); 

    /* add multiple domains name here */ 
    $allow_domains = ['company1.com', 'company2.com', 'company3.com']; 

    /* get domain name from user email */ 
    $domain_name = substr(strrchr($user_email, "@"), 1); 

    if (!in_array($domain_name, $allow_domains)){ 
     exit(wp_redirect(add_query_arg('err', 'you_must_have_googlemail'))); 
    } 
} 
?> 
+0

私は私の会社の実際の電子メールドメインへの@ company1.comのメールアドレスを変更したが、そのコードは動作しませんでした。私が試みたすべての電子メールドメインは、私が登録することを許可しませんでした。 –

+0

私はちょうどコードを更新しました..あなたは上記のコードを使用しました.. –

0

strstr() is more memory intensive compared to strpos()を、私は後者を使用することをお勧めします。一致が見つかったときはいつでも(ループ

  • のために許可された各ドメインを介してfalse
  • 反復するために、変数を設定

    1. $checkを言う:配列を扱うときは、次の反復のロジックを使用することができますstrpos()を使用して)、$checktrueに設定し、ループから脱落します。私は時に小文字にあなたのユーザーのメールを変換推薦:これは、試合はすでに
    2. $checkを評価し、エラー/終了

    ヒントをスローするかどうかを決める発見されたときに我々は配列全体を横断していないことを保証します大文字と小文字が混在しているメールを入力するユーザーがいるため、strpos(またはstripos()を使用)を使用してください。念頭に置いて

    は、ここでの例です:

    <?php 
    add_action('um_before_new_user_register', 'require_google_email_for_signup'); 
    function require_google_email_for_signup($args) { 
    
        extract($args); 
    
        // Store allowed domains in an array 
        $allowed_domains = ['@company1.com', '@company2.com', '@company3.com']; 
    
        // Set flag to false (fail-safe) 
        $check = false; 
    
        // Iterate through all allowed domains 
        foreach($allowed_domains as $domain) { 
    
         // If a match is found (remember to use lowercase emails!) 
         // Update flag and break out of for loop 
         if (strpos(strtolower($user_email), $domain) !== false) { 
          $check = true; 
          break; 
         } 
        } 
    
        if (!$check) 
         exit(wp_redirect(add_query_arg('err', 'you_must_have_googlemail'))); 
    } 
    
  • +0

    このスタックオーバーフローコミュニティはすばらしいです!テリー、あなたのコードは完璧に働いた! –

    関連する問題