WordPress 注册表单添加额外的字段
WordPress 默认的注册表单只有“用户名”和“电子邮件”这两个字段,不少朋友希望注册的时候,添加额外的字段,比如“名字”和“姓氏”等:
下面,倡萌就讲解一下添加“名字”和“姓氏”这两个字段的方法,将下面的代码添加到主题的 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 ); } |
代码分 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 ); |
默认情况下,WordPress个人资料的可用字段如下:
- user_login
- user_pass
- user_nicename
- user_email
- user_url
- user_registered
- user_activation_key
- user_status
- display_name
- nickname
- first_name
- last_name
- description
- jabber
- aim
- yim
- user_level
- user_firstname
- user_lastname
- user_description
- rich_editing
- comment_shortcuts
- admin_color
- plugins_per_page
- plugins_last_view
- ID
如果你想添加额外的字段到个人资料中,请参考:
然后就可以根据上文的代码示例添加字段到注册表单。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
12 条评论
发表评论
要发表评论,您必须先登录。
请问,为什么添加的字段注册表单提交后,不能保存到数据库中,到后台填写更新资料才能保存
请注意检查下字段的名称是否一一对应
这样是保存到usermeta表里的,有没有办法保存到users表里?
比如注册表单添加一个字段user_url,需要保存到users而不是usermeta
用户的相关信息一般都是添加到usermeta,只有少数几个字段才会添加到 users
前端用户中心不是用了? ❓
请问啊 这些字段怎么设置为非必填选项?因为我设置的有些字段不是必须要填的..但是现在情况是不填的话就通过不了貌似..
大学快一周年了吧
呵呵 这个可以有~
需要注意的是,表单使用的是 update_user_meta() 函数来保存数据,请确保第 2 个参数是已经存在的。比如下面的 ‘first_name’ 和 ‘last_name’ 是已经存在数据库中的。 这里的意思是 第二个参数要实现添加到数据库中?那如何添加呢?
‘first_name’ 和 ‘last_name’ 是WP默认就存在的个人资料字段,你可以在后台“我的个人资料”中看到,所以才可以直接在注册表单中使用它来保存用户提交的信息。如果你要添加默认没有的其他字段,文章末尾已经有参考文章了,自己看。
ok thx
好