簡體   English   中英

用戶在 WordPress 上注冊時更改用戶角色

[英]Change user role when user registers on WordPress

我正在使用WPEverest 的用戶注冊插件來構建我的注冊表單。 我的表單有一個 select 選項供用戶選擇他們的用戶角色 - 申請人或提供者。 下面是 select 輸入。

<form method='post' class='register' data-form-id="57"
              data-enable-strength-password="" data-minimum-password-strength="3"  data-captcha-enabled="">
..
...
    <select data-rules="" data-id="role" name="role" id="role" class="select ur-frontend-field  " required="required" data-label="What is Your Role?" data-allow_clear="true" data-placeholder="">
        <option value="Applicant"  selected='selected'>Applicant</option>
        <option value="Provider" >Provider</option>
    </select>
...
...
</form> 

這是我在functions.php中的鈎子,但不知何故它不會將用戶保存為角色提供者,而只是作為默認角色 - 申請人。

add_action('user_register', 'update_role');
function update_role($user_id, $meta=array() ) {

   if ( isset( $_POST['role'] ) ) {
       $userdata = array();
       $userdata['ID'] = $user_id;
       $role = htmlspecialchars($_POST['role'], ENT_QUOTES, 'UTF-8');
      
       //Only allow if user role is those we recognize
       if ( $role == 'Applicant' ) {
           $userdata['role'] = 'applicant';
           wp_update_user($userdata);
           
       } else if ( $role == 'Provider') {
            $userdata['role'] = 'provider';
            wp_update_user($userdata);
       }
   }
}

我測試了$_POST['role']也沒有返回任何內容。 任何人都知道如何解決這個問題?

我想到了。 我需要如下調用插件的鈎子,而不是user_register 它在wp-content\plugins\user-registration\includes\frontend\class-ur-frontend-form-handler.php下觸發

do_action( 'user_registration_after_register_user_action', self::$valid_form_data, $form_id, $user_id );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM