你必须做各种各样的事情。但您可以更改最终成员使用的挂钩。他们使用验证类。但是记住您的需要,您可以绕过这个类的使用。这是我认为可行的解决方案
remove_action( \'um_submit_form_register\', \'um_submit_form_register\', 10 );
现在我们将注册新方法。
add_action( \'um_submit_form_register\', \'my_custom_submit_form_register\', 10 );
下面是函数。我认为开发人员在下一个版本中必须做的是在验证类中提供过滤器。
function my_custom_submit_form_register( $args ) {
if ( isset( UM()->form()->errors ) ) {
return false;
}
/**
* 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 ( ! empty( $username ) && empty( $user_login ) ) {
$user_login = $username;
}
if ( ! empty( $first_name ) && ! empty( $last_name ) && empty( $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;
$temp_user_login = $user_login;
while ( username_exists( $temp_user_login ) ) {
$temp_user_login = $user_login . $count;
$count++;
}
if ( $temp_user_login !== $user_login ) {
$user_login = $temp_user_login;
}
}
if ( empty( $user_login ) && ! empty( $user_email ) ) {
$user_login = $user_email;
}
$unique_userID = UM()->query()->count_users() + 1;
if ( empty( $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 = apply_filters(\'my_custom_password_strength\', UM()->validation()->generate( 8 ));
}
if ( empty( $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,
);
$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;
}
我没有更改任何内容,只是添加了过滤器,所以如果开发人员更改了任何内容,都不会出现问题(如果开发人员添加了新的内容,您将面临问题,否则我会联系他们添加过滤器)。这里是过滤函数。
function my_custom_password_strength() {
global $ultimatemember;
$password = $_POST[\'user_password-257\'];
if (preg_match(" /^(?=.*[!@#$%^&*-])(?=.*[0-9])(?=.*[A-Z]).{8,20}$/", $password)) {
return wp_generate_password(8)
} else {
$ultimatemember->classes[\'form\']->add_error( \'user_password-257\', __(\'Your password must have a special character\') );
do_action(\'um_user_registration\', $args);
}
}
这是你能做到这一点的唯一方法。您可能需要再添加一些支票。但请记住只需使用过滤器功能
my_custom_password_strength().
希望这有帮助。谢谢