分享笔记:

WordPress注册表单添加自定义字段

注册表单添加额外信息

文章目录

网站用户注册这方面,除了基本的用户,邮箱和密码以外,你有时可能会想要添加额外的一些注册信息字段,这里我告诉你怎么做到,而且可以在后台方便查询到用户注册时填写的信息。(你的WooCommerce注册要是只有邮箱是因为你没有在WooCommerce的用户设置开起来用户名和密码)

woocommerce注册表单
基本的名字,邮箱和密码
wordpress有更多注册信息的注册表单
要求填写更多信息的注册表单

添加需要的自定义字段

首先我们得确保我们想要设置的注册表单是可以编辑的。这里我们就可以使用各种提供注册功能的表单,不过在开始前,我们需要建需要的字段,这个我们可以通过自定义代码来添加或者用插件,这里我们就用ACF(Advanced Custom Fields)。

添加自定义字段添加注册自定义字段

我这是简单的添加了一个微信号的字段,你可以根据自己的需求额外添加。

这里我又添加了一个selector字段,它的操作会有点不一样。下面的显示条件我们选择在全部用户角色展示

注册自定义字段显示区域

注册表单添加自定义字段

做好需要的字段后,我们得有一个注册表单,市面上有非常多的类似插件,我这里就拿常见的WPForms举栗子(它的注册表单是PRO功能),其他的表单操作方式大差不差,都是需要字段的Key。下面我还会讲怎么通过actions pack在elementor表单上添加自定义字段。

wpforms注册用户插件

用WPForms注册用户除了要PRO版之外,还需要安装他们家的用户注册addons。

wpforms注册用户字段

你可以使用它提供的注册模板或者自己搭一个注册表单,然后在设置选项里有一个 “User Registration” 你可以选择连上一些它自带的注册用户字段(邮箱是必须要连的)或者在下面添加自己做的自定义字段。

wpforms添加自定义注册用户字段

Elementor注册表单添加自定义字段

我之前发过怎么让Elementor表单变成注册表单的笔记,在它上面添加自定义字段也很简单。

在“register”下面有一个additional fields的选项,在里面把我们建的自定义字段key和表单上的字段连上就可以了。

Dynamic.ooo添加表单自定义字段

Dynamic.ooo是一个非常强,专门针对Elementor的一款插件,它是付费的,不过它有一个免费的条件显示插件,也非常好用,我之前在怎么正确隐藏网站元素的笔记里推荐过。用它来注册用户我们需要开启它的“Save for Elementor Pro Form”功能。

dynamic elementor 插件

开启save后,在Elementor表单的“Actions after submit”里面会出现一个“Save”,我们点击使用它。“Actions after submit”里面一些多余的其他功能可以去除,像“Email“发送邮件功能,多少是有点没有必要了。

dynamic elementor actios after submit save

在“save”界面里面我们选择“User”才能给表单启用注册用户功能

dynamic elementor表单注册用户

我们主要设置的就是它的注册三件套(名字,邮箱和密码),这三个是必须设置的,对应的选项要写对应的字段ID。用Dynamic.ooo我们并不需要像上面两个其他方法一样,把每个添加的字段连上(除了名字,邮箱和密码)一开始做的自定义字段的key上,因为它是全部自动连的。

elementor表单注册用户elementor表单注册用户

想要加其他的字段你直接加就行,不过要确保他们的ID是和你一开始用ACF建的Value对应。

如果你要加Selector字段,那么就稍微复杂点,在Elementor上你需要把Laber和Value通过 “|” 来分开

elementor表单注册用户选项字段

在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);

这个其实就看你自己添加的字段了,不过你不是很懂我是建议你用插件来做,会简单很多。最终的效果如下:

为笔记评分

平均评分 0 / 5. 摘星者: 0

有疑问?留个言吧!

更多结果...

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

更多结果...

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors