在网站用户注册这方面,除了基本的用户,邮箱和密码以外,你有时可能会想要添加额外的一些注册信息字段,这里我告诉你怎么做到,而且可以在后台方便查询到用户注册时填写的信息。(你的WooCommerce注册要是只有邮箱是因为你没有在WooCommerce的用户设置开起来用户名和密码)
添加需要的自定义字段
首先我们得确保我们想要设置的注册表单是可以编辑的。这里我们就可以使用各种提供注册功能的表单,不过在开始前,我们需要建需要的字段,这个我们可以通过自定义代码来添加或者用插件,这里我们就用ACF(Advanced Custom Fields)。
我这是简单的添加了一个微信号的字段,你可以根据自己的需求额外添加。
这里我又添加了一个selector字段,它的操作会有点不一样。下面的显示条件我们选择在全部用户角色展示。
注册表单添加自定义字段
做好需要的字段后,我们得有一个注册表单,市面上有非常多的类似插件,我这里就拿常见的WPForms举栗子(它的注册表单是PRO功能),其他的表单操作方式大差不差,都是需要字段的Key。下面我还会讲怎么通过actions pack在elementor表单上添加自定义字段。
用WPForms注册用户除了要PRO版之外,还需要安装他们家的用户注册addons。
你可以使用它提供的注册模板或者自己搭一个注册表单,然后在设置选项里有一个 “User Registration” 你可以选择连上一些它自带的注册用户字段(邮箱是必须要连的)或者在下面添加自己做的自定义字段。
Elementor注册表单添加自定义字段
我之前发过怎么让Elementor表单变成注册表单的笔记,在它上面添加自定义字段也很简单。
在“register”下面有一个additional fields的选项,在里面把我们建的自定义字段key和表单上的字段连上就可以了。
Dynamic.ooo添加表单自定义字段
Dynamic.ooo是一个非常强,专门针对Elementor的一款插件,它是付费的,不过它有一个免费的条件显示插件,也非常好用,我之前在怎么正确隐藏网站元素的笔记里推荐过。用它来注册用户我们需要开启它的“Save for Elementor Pro Form”功能。
开启save后,在Elementor表单的“Actions after submit”里面会出现一个“Save”,我们点击使用它。“Actions after submit”里面一些多余的其他功能可以去除,像“Email“发送邮件功能,多少是有点没有必要了。
在“save”界面里面我们选择“User”才能给表单启用注册用户功能
我们主要设置的就是它的注册三件套(名字,邮箱和密码),这三个是必须设置的,对应的选项要写对应的字段ID。用Dynamic.ooo我们并不需要像上面两个其他方法一样,把每个添加的字段连上(除了名字,邮箱和密码)一开始做的自定义字段的key上,因为它是全部自动连的。
想要加其他的字段你直接加就行,不过要确保他们的ID是和你一开始用ACF建的Value对应。
如果你要加Selector字段,那么就稍微复杂点,在Elementor上你需要把Laber和Value通过 “|” 来分开
在ACF里面是反的,value在前laber在后。
WordPress后台显示自定义注册字段
不管你用什么做的这个注册表单,都一定要确保Meta Key/Value是对的,不然你怎么都抓取不到这些字段。
全部做好之后把表单插入你要的页面就可以了,你可以注册试试。注册成功后你在后台的用户界面是看不到自己添加的字段的,你只能点击注册的用户才能看到。
想要更快速的查看你添加的字段,你可以使用一些容许你把这些value在admin bar调出来的插件,如果你添加的字段不多,那么把下面的代码加到你的网站就行,你得换上自己想要展示的Meta Key,这个代码里面是加了2个普通的文字字段和一个选择字段。
$columns[‘Meta Key’] = ‘想要在用户界面显示的名字’;
if ($column_name == ‘Meta Key’) {
return get_user_meta($user_id, ‘Meta Key’, true);
// Admin bar 添加自定义字段
function agregar_columnas_personalizadas($columns) {
$columns['weixin'] = 'Weixin';
$columns['numero_siret'] = 'Número Siret';
$columns['activite'] = 'Activité';
return $columns;
}
add_filter('manage_users_columns', 'agregar_columnas_personalizadas');
// 显示字段 Meta Key
function mostrar_columnas_personalizadas($value, $column_name, $user_id) {
if ($column_name == 'weixin') {
return get_user_meta($user_id, 'weixin', true);
}
if ($column_name == 'numero_siret') {
return get_user_meta($user_id, 'numero_siret', true);
}
if ($column_name == 'activite') {
return get_user_meta($user_id, 'activite', true);
}
return $value;
}
add_action('manage_users_custom_column', 'mostrar_columnas_personalizadas', 10, 3);
如果你的选择字段的value是和laber完全一样,那么上面的代码没什么问题,不过我的selector value是做了简化的,比如 arc_dec : Architecte / Décorateur,上面的代码会在用户界面显示 arc_dec(value)而不是 Architecte / Décorateur(laber),想要它显示laber那么我们需要加一个 array:
// Admin bar 添加自定义字段
function agregar_columnas_personalizadas($columns) {
$columns['weixin'] = 'Weixin';
$columns['numero_siret'] = 'Número Siret';
$columns['activite'] = 'Activité';
return $columns;
}
add_filter('manage_users_columns', 'agregar_columnas_personalizadas');
// 显示字段 Meta Key
function mostrar_columnas_personalizadas($value, $column_name, $user_id) {
if ($column_name == 'weixin') {
return get_user_meta($user_id, 'weixin', true);
}
if ($column_name == 'numero_siret') {
return get_user_meta($user_id, 'numero_siret', true);
}
if ($column_name == 'activite') {
$activite = get_user_meta($user_id, 'activite', true);
$activite_labels = array(
'arc_dec' => 'Architecte / Décorateur',
'age_eve' => 'Agence événementielle',
'edication' => 'Éducation',
'hot_rest' => 'Hôtellerie et restauration',
'immobilier' => 'Immobilier',
'retail' => 'Retail',
'sante_bien' => 'Santé / Bien-être',
'tourisme_loisirs' => 'Tourisme / loisirs'
);
return isset($activite_labels[$activite]) ? $activite_labels[$activite] : $activite;
}
return $value;
}
add_action('manage_users_custom_column', 'mostrar_columnas_personalizadas', 10, 3);
这个其实就看你自己添加的字段了,不过你不是很懂我是建议你用插件来做,会简单很多。最终的效果如下: