如何覆盖WordPress注册并插入自动生成的用户名?

时间:2014-11-05 作者:user1462

我需要在WordPress注册时自动生成用户名。我已经设置了一个自定义注册表,并希望在函数中创建用户名。php。

有人能告诉我为什么这样不行吗?看来在阅读了WordPress Codex on customized registration forms?

function register_hook ( $user_id ) {
  update_user_meta( $user_id, \'signup_username\', \'the-auto-generated-name\' );
  // also tried this:
  // update_user_meta( $user_id, \'user_login\', \'the-auto-generated-name\' );
}
add_action( \'user_register\', \'register_hook\' );

2 个回复
最合适的回答,由SO网友:Ahmad M 整理而成

一种替代方法是修改$_POST[\'user_login\'] 提交新注册表时输入值,即WP处理注册表之前。实现这一目标的好方法是login_form_register 在处理和呈现注册表之前激发。login_init 也可以,但需要更多的工作来确保register 行动

add_action(\'login_form_register\', \'custom_user_login\');
function custom_user_login() {

    // make sure regisration form is submitted
    if ($_SERVER[\'REQUEST_METHOD\'] != \'POST\')
        return;

    // base of user_login, change it according to ur needs
    $ulogin = \'random-user\';

    // make user_login unique so WP will not return error
    $check = username_exists($ulogin);
    if (!empty($check)) {
        $suffix = 2;
        while (!empty($check)) {
            $alt_ulogin = $ulogin . \'-\' . $suffix;
            $check = username_exists($alt_ulogin);
            $suffix++;
        }
        $ulogin = $alt_ulogin;
    }

    $_POST[\'user_login\'] = $ulogin;
}

SO网友:Milo

您可以通过pre_user_login 滤器请注意,当创建或更新用户时,此操作将运行。

function wpd_custom_user_login( $user_login ) {
    $user_login = \'the-auto-generated-name\';
    return $user_login;
}
add_filter( \'pre_user_login\' , \'wpd_custom_user_login\' );

结束

相关推荐

Global functions on WPMU

我在一个多站点环境中工作,所有站点都是相关的。最近的许多发展都要求我将某些功能复制并粘贴到许多不同的主题文件夹中,如果我需要到处更新它们,就会出现问题。拥有全局“functions.php”文件的最佳方式是什么?我的想法是要么在themes文件夹中包含一个文件并包含它,要么创建一个插件并启用该插件。