WP multi 中的用户名只有小写字母和数字吗?

Username only lowercase and numbers in WP multi?

我们在工作中的多个子域中使用 wordpress。 所以我们有每个域的管理员,他们可以创建用户来订阅编辑贡献。 问题是,我们公司编辑的规则是所有 logins/usernames 都必须像这样 "first-name.family-name" ex "barack.obama"... :-) 但是管理员做不到,只有超级管理员可以做! 在子域管理员模式下,有一条消息说:"Only the lowercase letters a-z and numbers allowed".

所以我们想让管理员可以创建名字为 name.family 的用户,但我们尝试搜索如何在代码中更改它,但没有找到。

如果有人能帮忙,谢谢!

在多站点中,用户名使用 wpmu_validate_user_signup, which you can find in /wp-includes/ms-functions.php#L462 验证。

您可以在 0-9 之后添加一个点,但不推荐这样做,因为那样您会讨厌更新 WordPress 核心。

if ( $user_name != $orig_username || preg_match( '/[^a-z0-9.]/', $user_name ) ) {

因此,更好的解决方案是为其创建一个插件。

您可以尝试在 php 文件中添加以下内容并将其添加到 /wp-content/mu-plugins/

<?php
/*
Plugin Name: wpmu no username error
*/

function wpmu_no_username_error( $result ) {
    $error_name = $result[ 'errors' ]->get_error_messages( 'user_name' );
    if ( empty ( $error_name ) 
        or false===$key=array_search( __( 'Only lowercase letters (a-z) and numbers are allowed.' ), $error_name)
    ) {
    return $result;
    }
//  only remove the error we are disabling, leaving all others
    unset ( $result[ 'errors' ]->errors[ 'user_name' ][$key] );
/**
 *  re-sequence errors in case a non sequential array matters
 *  e.g. if a core change put this message in element 0 then get_error_message() would not behave as expected)
 */
    $result[ 'errors' ]->errors[ 'user_name' ] = array_values( $result[ 'errors' ]->errors[ 'user_name' ] );
    return $result;
}
add_filter( 'wpmu_validate_user_signup', 'wpmu_no_username_error' );

虽然我没有尝试过。这是基于“Changing the username character limit from four to less characters”。

希望对您有所帮助。至少它应该让你接近。 GL搭配吧!