WordPressの登録時にユーザー名を自動生成する必要があります。カスタム登録フォームをセットアップして、functions.phpでユーザー名を作成したいと思います。
これがうまくいかない理由を誰かに教えてもらえますか。 カスタマイズされた登録フォームの/ - WordPress Codexを読んだ後に動作するはずです ?
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' );
1つの代替方法は、新しい登録フォームを送信するとき、つまり登録フォームをWP処理する前に、$_POST['user_login']
入力値を変更することです。これを達成するための良いフックは、登録フォームを処理してレンダリングする前に起動する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;
}
あなたは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' );