Ultimate Member 可以支援中文名稱註冊嗎?

正在檢視 5 個帖子:1-5 (共 5 個帖子)
  • 作者
    帖子
  • xudes
    • 文章數量: 86
    @xudes
    樓主

    Ultimate Member 能用中文註冊嗎?

    詩語
    管理員
    • 文章數量: 5,925
    @feibisi

    註冊時必須為英文或者數字,但是你可以把暱稱設定為必填就好了。這樣也算是中文名稱註冊。

    xudes
    • 文章數量: 86
    @xudes
    樓主

    特殊符號可以嗎?

    詩語
    管理員
    • 文章數量: 5,925
    @feibisi

    你試一下就知道了嘛,暱稱填特殊符號應該可以的。

    cat
    • 文章數量: 108
    @429456968

    正好我也有這個需求,研究了半天搞出來了,記下來備份。

    ultimate member 預設註冊不支援中文,會報錯,所以需要修改程式碼。

    首先把登錄檔單調成這樣。

    然後找到檔案 wp-content/plugins/ultimate-member/includes/core/um-actions-register

    修改以下函式

     

    function um_submit_form_register( $args ) {
    if ( isset( UM()->form()->errors ) )
    return false;
    
    $displayname= $args['nickname'];//獲取暱稱,用作中文註冊名稱
    
    /**
    * UM hook
    *
    * @type filter
    * @title um_add_user_frontend_submitted
    * @description Extend user data on registration form submit
    * @input_vars
    * [{"var":"$submitted","type":"array","desc":"Registration data"}]
    * @change_log
    * ["Since: 2.0"]
    * @usage
    * <!--?php add_filter( 'um_add_user_frontend_submitted', 'function_name', 10, 1 ); ?-->
    * @example
    * <!--?php * add_filter( 'um_add_user_frontend_submitted', 'my_add_user_frontend_submitted', 10, 1 ); * function my_add_user_frontend_submitted( $submitted ) { * // your code here * return $submitted; * } * ?-->
    */
    $args = apply_filters( 'um_add_user_frontend_submitted', $args );
    
    extract( $args );
    
    if ( isset( $username ) && ! isset( $user_login ) ) {
    $user_login = $username;
    }
    
    if ( ! empty( $first_name ) && ! empty( $last_name ) && ! isset( $user_login ) ) {
    
    if ( UM()->options()->get( 'permalink_base' ) == 'name' ) {
    $user_login = rawurlencode( strtolower( str_replace( " ", ".", $first_name . " " . $last_name ) ) );
    } elseif ( UM()->options()->get( 'permalink_base' ) == 'name_dash' ) {
    $user_login = rawurlencode( strtolower( str_replace( " ", "-", $first_name . " " . $last_name ) ) );
    } elseif ( UM()->options()->get( 'permalink_base' ) == 'name_plus' ) {
    $user_login = strtolower( str_replace( " ", "+", $first_name . " " . $last_name ) );
    } else {
    $user_login = strtolower( str_replace( " ", "", $first_name . " " . $last_name ) );
    }
    
    // if full name exists
    $count = 1;
    while ( username_exists( $user_login ) ) {
    $user_login .= $count;
    $count++;
    }
    }
    
    if ( ! isset( $user_login ) && isset( $user_email ) && $user_email ) {
    $user_login = $user_email;
    }
    
    $unique_userID = UM()->query()->count_users() + 1;
    
    if ( ! isset( $user_login ) || strlen( $user_login ) > 30 && ! is_email( $user_login ) ) {
    $user_login = 'user' . $unique_userID;
    }
    
    if ( isset( $username ) && is_email( $username ) ) {
    $user_email = $username;
    }
    
    if ( ! isset( $user_password ) ) {
    $user_password = UM()->validation()->generate( 8 );
    }
    
    if ( ! isset( $user_email ) ) {
    $site_url = @$_SERVER['SERVER_NAME'];
    $user_email = 'nobody' . $unique_userID . '@' . $site_url;
    /**
    * UM hook
    *
    * @type filter
    * @title um_user_register_submitted__email
    * @description Change user default email if it's empty on registration
    * @input_vars
    * [{"var":"$user_email","type":"string","desc":"Default email"}]
    * @change_log
    * ["Since: 2.0"]
    * @usage
    * <!--?php add_filter( 'um_user_register_submitted__email', 'function_name', 10, 1 ); ?-->
    * @example
    * <!--?php * add_filter( 'um_user_register_submitted__email', 'my_user_register_submitted__email', 10, 1 ); * function my_user_register_submitted__email( $user_email ) { * // your code here * return $user_email; * } * ?-->
    */
    $user_email = apply_filters( 'um_user_register_submitted__email', $user_email );
    }
    
    $credentials = array(
    'user_login' => $user_login,
    'user_password' => $user_password,
    'user_email' => trim( $user_email ),
    );
    
    $args['submitted'] = array_merge( $args['submitted'], $credentials );
    $args = array_merge( $args, $credentials );
    
    //get user role from global or form's settings
    $user_role = UM()->form()->assigned_role( UM()->form()->form_id );
    
    //get user role from field Role dropdown or radio
    if ( isset( $args['role'] ) ) {
    global $wp_roles;
    $um_roles = get_option( 'um_roles' );
    
    if ( ! empty( $um_roles ) ) {
    $role_keys = array_map( function( $item ) {
    return 'um_' . $item;
    }, get_option( 'um_roles' ) );
    } else {
    $role_keys = array();
    }
    
    $exclude_roles = array_diff( array_keys( $wp_roles->roles ), array_merge( $role_keys, array( 'subscriber' ) ) );
    
    //if role is properly set it
    if ( ! in_array( $args['role'], $exclude_roles ) ) {
    $user_role = $args['role'];
    }
    }
    
    /**
    * UM hook
    *
    * @type filter
    * @title um_registration_user_role
    * @description Change user role on registration process
    * @input_vars
    * [{"var":"$role","type":"string","desc":"User role"},
    * {"var":"$submitted","type":"array","desc":"Registration data"}]
    * @change_log
    * ["Since: 2.0"]
    * @usage
    * <!--?php add_filter( 'um_registration_user_role', 'function_name', 10, 2 ); ?-->
    * @example
    * <!--?php * add_filter( 'um_registration_user_role', 'my_registration_user_role', 10, 2 ); * function my_user_register_submitted__email( $role, $submitted ) { * // your code here * return $role; * } * ?-->
    */
    
    $user_role = apply_filters( 'um_registration_user_role', $user_role, $args );
    
    $userdata = array(
    'user_login' => $user_login,
    'user_pass' => $user_password,
    'user_email' => $user_email,
    'role' => $user_role,
    'display_name' => $displayname,//允許中文名稱註冊,將暱稱作為使用者名稱
    );
    $user_id = wp_insert_user( $userdata );
    
    /**
    * UM hook
    *
    * @type action
    * @title um_user_register
    * @description After complete UM user registration.
    * @input_vars
    * [{"var":"$user_id","type":"int","desc":"User ID"},
    * {"var":"$args","type":"array","desc":"Form data"}]
    * @change_log
    * ["Since: 2.0"]
    * @usage add_action( 'um_user_register', 'function_name', 10, 2 );
    * @example
    * <!--?php * add_action( 'um_user_register', 'my_user_register', 10, 2 ); * function my_user_register( $user_id, $args ) { * // your code here * } * ?-->
    */
    do_action( 'um_user_register', $user_id, $args );
    
    return $user_id;
    }

    這樣就支援中文了,bbpress 右側欄小工具也能預設顯示中文了。

正在檢視 5 個帖子:1-5 (共 5 個帖子)
  • 哎呀,回覆話題必需登入。

話題資訊

  • 當前位於:Ultimate Member
  • 4 條回覆
  • 3 個參與人
  • 最後回覆:<a href="https://bbs.weixiaoduo.com/users/429456968/" title=" 檢視 cat 的個人資料" class="bbp-author-link"><span class="bbp-author-name">cat</span></a>
  • 上次活動:<a href="https://bbs.weixiaoduo.com/topic/24549/#post-29376" title=" 回覆至:Ultimate Member 可以支援中文名稱註冊嗎?">6 年、 4 月前</a>