WordPress 註冊表單添加額外的字段

WordPress 默認的註冊表單隻有“用戶名”和“電子郵件”這兩個字段,不少朋友希望註冊的時候,添加額外的字段,比如“名字”和“姓氏”等:

require-additional-profile-fields-wpdaxue_com

下面,就講解一下添加“名字”和“姓氏”這兩個字段的方法,將下面的代碼添加到主題的 functions.php 即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/**
 * WordPress 註冊表單添加額外的字段
 * https://www.wpdaxue.com/require-additional-profile-fields-at-registration.html
 */
// 在註冊界面添加額外的表單
add_action( 'register_form', 'additional_profile_fields' );
function additional_profile_fields() { ?>
    <p>
        <label><?php _e('名字') ?><br />
        <input type="text" name="first_name" id="first_name" class="input" size="25" tabindex="20" /></label>
    </p>
    <p>
        <label><?php _e('姓氏') ?><br />
        <input type="text" name="last_name" id="last_name" class="input" size="25" tabindex="20" /></label>
    </p>
<?php }
// 檢測表單字段是否為空,如果為空顯示提示信息
add_action( 'register_post', 'add_register_field_validate_first_name', 10, 3 );
function add_register_field_validate_first_name( $sanitized_user_login, $user_email, $errors) {
    if (!isset($_POST[ 'first_name' ]) || empty($_POST[ 'first_name' ])) {
        return $errors->add( 'firstnameempty', '<strong>ERROR</strong>: 請輸入您的名字.' );
    }
}
add_action( 'register_post', 'add_register_field_validate_last_name', 10, 3 );
function add_register_field_validate_last_name( $sanitized_user_login, $user_email, $errors) {
    if (!isset($_POST[ 'last_name' ]) || empty($_POST[ 'last_name' ])) {
        return $errors->add( 'lastnameempty', '<strong>ERROR</strong>: 請輸入您的姓氏.' );
    }
}
// 將用戶填寫的字段內容保存到數據庫中
add_action( 'user_register', 'insert_register_fields' );
function insert_register_fields( $user_id ) {
 
    $first_name = apply_filters('pre_user_first_name', $_POST['first_name']);
    $last_name = apply_filters('pre_user_last_name', $_POST['last_name']);
 
    // 以下的 'first_name' 和 'last_name' 是“我的個人資料”中已有的字段
    update_user_meta( $user_id, 'first_name', $first_name );
    update_user_meta( $user_id, 'last_name', $last_name );
}

/**
* WordPress 註冊表單添加額外的字段
* https://www.wpdaxue.com/require-additional-profile-fields-at-registration.html
*/
// 在註冊界面添加額外的表單
add_action( ‘register_form’, ‘additional_profile_fields’ );
function additional_profile_fields() { ?>
<p>
<label><?php _e(‘名字’) ?><br />
<input type="text" name="first_name" id="first_name" class="input" size="25" tabindex="20" /></label>
</p>
<p>
<label><?php _e(‘姓氏’) ?><br />
<input type="text" name="last_name" id="last_name" class="input" size="25" tabindex="20" /></label>
</p>
<?php }
// 檢測表單字段是否為空,如果為空顯示提示信息
add_action( ‘register_post’, ‘add_register_field_validate_first_name’, 10, 3 );
function add_register_field_validate_first_name( $sanitized_user_login, $user_email, $errors) {
if (!isset($_POST[ ‘first_name’ ]) || empty($_POST[ ‘first_name’ ])) {
return $errors->add( ‘firstnameempty’, ‘<strong>ERROR</strong>: 請輸入您的名字.’ );
}
}
add_action( ‘register_post’, ‘add_register_field_validate_last_name’, 10, 3 );
function add_register_field_validate_last_name( $sanitized_user_login, $user_email, $errors) {
if (!isset($_POST[ ‘last_name’ ]) || empty($_POST[ ‘last_name’ ])) {
return $errors->add( ‘lastnameempty’, ‘<strong>ERROR</strong>: 請輸入您的姓氏.’ );
}
}
// 將用戶填寫的字段內容保存到數據庫中
add_action( ‘user_register’, ‘insert_register_fields’ );
function insert_register_fields( $user_id ) { $first_name = apply_filters(‘pre_user_first_name’, $_POST[‘first_name’]);
$last_name = apply_filters(‘pre_user_last_name’, $_POST[‘last_name’]);
// 以下的 ‘first_name’ 和 ‘last_name’ 是“我的個人資料”中已有的字段
update_user_meta( $user_id, ‘first_name’, $first_name );
update_user_meta( $user_id, ‘last_name’, $last_name );
}

代碼分 3 部分組成:

1.在註冊界面添加額外的表單

2.檢測表單字段是否為空,如果為空顯示提示信息

3.將用戶填寫的字段內容保存到數據庫中

需要註意的是,表單使用的是 update_user_meta() 函數來保存數據,請確保第 2 個參數是已經存在的。比如下面的 ‘first_name’ 和 ‘last_name’ 是已經存在數據庫中的。

1
2
    update_user_meta( $user_id, 'first_name', $first_name );
    update_user_meta( $user_id, 'last_name', $last_name );

update_user_meta( $user_id, ‘first_name’, $first_name );
update_user_meta( $user_id, ‘last_name’, $last_name );

默認情況下,WordPress個人資料的可用字段如下:

user_loginuser_passuser_nicenameuser_emailuser_urluser_registereduser_activation_keyuser_statusdisplay_namenicknamefirst_namelast_namedescriptionjabberaimyimuser_leveluser_firstnameuser_lastnameuser_descriptionrich_editingcomment_shortcutsadmin_colorplugins_per_pageplugins_last_viewID

如果你想添加額外的字段到個人資料中,請參考:

刪除/添加/調用WordPress用戶個人資料的聯系信息

WordPress 個人資料添加額外的字段

然後就可以根據上文的代碼示例添加字段到註冊表單。

發佈留言