通过插件构建自定义WordPress注册表单

注册用户是任何WordPress网站成功的重要因素。无论是简单的博客还是电子商务商店,注册用户都是接收您的消息并帮助您扩大品牌覆盖范围的受众。

多年来,标准的WordPress注册表被认为适用于普通的WordPress管理员。这就是为什么这种形式成为WordPress核心的重要组成部分。
但是,WordPress已不仅仅是一个简单的博客平台。它现在驱动了整个互联网的近30%。因此,几年前工作的可能不符合当前用户的要求。

与WordPress注册表相关的要求的解决方案很简单:WordPress自定义注册表。

为什么选择WordPress自定义注册表

自定义WordPress注册表单比标准表单有两个主要优点。
首先是与网站主题的整体外观和感觉的整合。标准表单通常不适用于自定义主题,并且自定义CSS文件总是有可能无法与表单很好地呈现。另一方面,自定义表单可以轻松设置为使用自定义CSS。

使用自定义注册表单的第二个也是更受欢迎的原因是标准表单中未包含的自定义字段选项。一个小的自定义注册表单可以加速整个过程,并从一个简洁的界面收集所有必要的数据。

自定义注册表不仅限于WordPress博客。如果您有一个WooCommerce商店,自定义WooCommerce注册表单是收集标准表单错过的特定用户信息项的好方法。

让我们首先创建一个WordPress自定义注册插件,然后您可以将其用作“自己的注册表单的样板”

WordPress自定义注册表单插件

首先在插件文件夹中创建一个文件夹。将此新文件夹命名为WordPress注册表。

在此文件夹中创建一个新的.php文件,并将其命名为custom-registration.php。首先在此文件中添加以下行:

<?PHP
/ *
  插件名称:WordPress注册表
  描述:使用短代码和脚本的自定义注册表单
  版本:1.x
  作者:Muhammad Owais Alam
 
 * /

1
2
3
4

6
7
8

<?PHP

/ *
插件名称:WordPress注册表
描述:使用短代码和脚本的自定义注册表单
版本:1.x
作者:Muhammad Owais Alam
 
 * /

由于这是一个自定义插件,上述信息将反映在WordPress插件页面中:

WordPress注册表

注册表格的HTML功能
以下函数包含表单的HTML代码。

function wordpress_custom_registration_form($ first_name,$ last_name,$ username,$ password,$ email){
    global $ username,$ password,$ email,$ first_name,$ last_name;
   回声'

名字 :

姓:

用户名 *

密码 *

电子邮件: *


“;
}

1
2
3
4

6
7
8
9
10
11
12
13
14
15
16
17
18

function wordpress_custom_registration_form($ first_name,$ last_name,$ username,$ password,$ email){

global $ username,$ password,$ email,$ first_name,$ last_name;

回声'

名字 :

姓:

用户名 *

密码 *

电子邮件: *


“;

}

如您所见,此功能具有非常基本的设计,仅涵盖基本问题。您可以按原样使用此功能,也可以通过添加HTML元素添加所需的字段。
就像现在一样,当插件被激活时,这就是访问者会看到的内容:

WordPress注册表单

WordPress表单注册验证

使用任何形式而不验证用户数据是一个确定的灾难方法。实际上,最好的情况是用户数据不准确。在最糟糕的情况下,您正在邀请互联网上的每个令人讨厌的角色来破解您的安全。

考虑到这一点,验证自定义WordPress用户注册表单插件的基本组件。它由函数wp_reg_form_valid实现,具有以下代码:

function wp_reg_form_valid($ username,$ password,$ email){
    global $ customize_error_validation;
    $ customize_error_validation = new WP_Error;
    if(empty($ username)|| empty($ password)|| empty($ email)){
        $ customize_error_validation-> add('field','请填写WordPress注册表单字段');
    }
    if(username_exists($ username))
        $ customize_error_validation-> add('user_name','User Already Exist');
    if(is_wp_error($ customize_error_validation)){
        foreach($ customize_error_validation-> get_error_messages()as $ error){
        回声'保持:';
        echo $ error。 “
“;
        }
    }
}

1
2
3
4

6
7
8
9
10
11
12
13
14
15

function wp_reg_form_valid($ username,$ password,$ email){

global $ customize_error_validation;

$ customize_error_validation = new WP_Error;

if(empty($ username)|| empty($ password)|| empty($ email)){

$ customize_error_validation-> add('field','请填写WordPress注册表单字段');

}

if(username_exists($ username))

$ customize_error_validation-> add('user_name','User Already Exist');

if(is_wp_error($ customize_error_validation)){

foreach($ customize_error_validation-> get_error_messages()as $ error){

回声'保持:';

echo $ error。 “
“;

}

}

}

上面的代码片段使用WP_Error类来简化验证过程。
请注意,全局$ customize_error_validation可确保WP_Error实例变为全局且可在验证函数范围之外访问。

验证过程的第一步是检查三个重要字段的用户名,电子邮件和密码是否为空。这是通过if(empty($ username)|| empty($ password)|| empty($ email))检查来实现的,该检查向用户表明这些是必填字段。接下来,username_exists($ username)验证用户名是否唯一。如果出现任何问题,用户将看到HOLD错误消息(您可以根据自己的要求对其进行自定义)。

表格验证

表单还可以使用基于JavaScript的验证。正如您在代码段中看到的那样,表单操作标记还可以支持在onsubmit操作上触发的JavaScript标记。为此,将表单操作标记修改为:

1

实际验证由以下validate()函数执行:

1
2
3
4

6
7
8
9
10
11
12
13

在validate()函数中,wp-custom-registration是表单名称,fname.value是字段名称和值对象的组合。
以下函数可确保填充表单的所有字段。接下来,它使用wp_insert()函数从数据库中添加表单中的数据。

function wordpress_user_registration_form_completion(){
global $ customize_error_validation,$ username,$ password,$ email,$ first_name,$ last_name;
if(1> count($ customize_error_validation-> get_error_messages())){
    $ userdata = array(
        'first_name'=> $ first_name,
        'last_name'=> $ last_name,
        'user_login'=> $ username,
        'user_email'=> $ email,
        'user_pass'=> $ password,
 
    );
    $ user = wp_insert_user($ userdata);
    echo'完整的WordPress注册。去 登录页面';
}
}

1
2
3
4

6
7
8
9
10
11
12
13
14
15

function wordpress_user_registration_form_completion(){

global $ customize_error_validation,$ username,$ password,$ email,$ first_name,$ last_name;

if(1> count($ customize_error_validation-> get_error_messages())){

$ userdata = array(

'first_name'=> $ first_name,

'last_name'=> $ last_name,

'user_login'=> $ username,

'user_email'=> $ email,

'user_pass'=> $ password,

 

);

$ user = wp_insert_user($ userdata);

echo'完整的WordPress注册。去 登录页面';

}

}

短代码注册

可以使用短代码(wp_registration_form)将此表单插入任何位置。以下是设置短代码的代码段:

add_shortcode('wp_registration_form','wp_custom_shortcode_registration');
 
function wp_custom_shortcode_registration(){
    ob_start();
    wordpress_custom_registration_form_function();
    return ob_get_clean();
}

1
2
3
4

6
7

add_shortcode('wp_registration_form','wp_custom_shortcode_registration');

 

function wp_custom_shortcode_registration(){

ob_start();

wordpress_custom_registration_form_function();

return ob_get_clean();

}

如果您希望在主题中集成表单,只需添加以下模板标记:

1

插件的完整代码

这是完整的代码

<?PHP
/ *
  插件名称:WordPress注册表
  描述:使用短代码和脚本的自定义注册表单
  版本:1.x
  作者:Muhammad Owais Alam
* /
function wordpress_custom_registration_form($ first_name,$ last_name,$ username,$ password,$ email){
    global $ username,$ password,$ email,$ first_name,$ last_name;
   回声'

名字 :

姓:

用户名 *

密码 *

电子邮件: *


“;
}
function wp_reg_form_valid($ username,$ password,$ email){
    global $ customize_error_validation;
    $ customize_error_validation = new WP_Error;
    if(empty($ username)|| empty($ password)|| empty($ email)){
        $ customize_error_validation-> add('field','请填写WordPress注册表的字段');
    }
    if(username_exists($ username))
        $ customize_error_validation-> add('user_name','User Already Exist');
    if(is_wp_error($ customize_error_validation)){
        foreach($ customize_error_validation-> get_error_messages()as $ error){
        回声'保持:';
        echo $ error。 “
“;
        }
    }
}
 
function wordpress_user_registration_form_completion(){
    global $ customize_error_validation,$ username,$ password,$ email,$ first_name,$ last_name;
    if(1> count($ customize_error_validation-> get_error_messages())){
        $ userdata = array(
        'first_name'=> $ first_name,
        'last_name'=> $ last_name,
        'user_login'=> $ username,
        'user_email'=> $ email,
        'user_pass'=> $ password,
 
        );
        $ user = wp_insert_user($ userdata);
        echo'完整的WordPress注册。去 登录页面';
    }
}
function wordpress_custom_registration_form_function(){
    global $ first_name,$ last_name,$ username,$ password,$ email;
    if(isset($ _ POST('submit'))){
        wp_reg_form_valid(
        $ _ POST( '用户名'),
        $ _ POST( '密码'),
        $ _ POST( '电子邮件'),
        $ _ POST( 'FNAME'),
        $ _ POST( 'L-NAME')
       );
 
        $ username = sanitize_user($ _POST('username'));
        $ password = esc_attr($ _POST('password'));
        $ email = sanitize_email($ _POST('email'));
        $ first_name = sanitize_text_field($ _POST('fname'));
        $ last_name = sanitize_text_field($ _POST('lname'));
       wordpress_user_registration_form_completion(
        $的用户名,
        $密码,
        $电子邮件,
        $ FIRST_NAME,
        $姓氏
        );
    }
    wordpress_custom_registration_form(
        $的用户名,
        $密码,
        $电子邮件,
        $ FIRST_NAME,
        $姓氏
    );
}
 
add_shortcode('wp_registration_form','wp_custom_shortcode_registration');
 
function wp_custom_shortcode_registration(){
    ob_start();
    wordpress_custom_registration_form_function();
    return ob_get_clean();
}

自定义验证字段方法
add_filter('registration_errors','custom_validation_error_method',10,2);
function custom_validation_error_method($ errors,$ lname,$ last_name){
 
    if(空($ _POST('fname'))||(!empty($ _POST('fname'))&& trim($ _POST('fname'))=='')){
        $ errors-> add('fname_error',__('错误: 输入您的名字。' ));
    }
 
    if(空($ _POST('lname'))||(!empty($ _POST('lname'))&& trim($ _POST('lname'))=='')){
        $ errors-> add('lname_error',__('错误:输入你的姓氏。' ));
    }
    返回$ errors;
}

1
2
3
4

6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
三十
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110

<?PHP

/ *
插件名称:WordPress注册表
描述:使用短代码和脚本的自定义注册表单
版本:1.x
作者:Muhammad Owais Alam
* /

function wordpress_custom_registration_form($ first_name,$ last_name,$ username,$ password,$ email){

global $ username,$ password,$ email,$ first_name,$ last_name;

回声'

名字 :

姓:

用户名 *

密码 *

电子邮件: *


“;

}

function wp_reg_form_valid($ username,$ password,$ email){

global $ customize_error_validation;

$ customize_error_validation = new WP_Error;

if(empty($ username)|| empty($ password)|| empty($ email)){

$ customize_error_validation-> add('field','请填写WordPress注册表的字段');

}

if(username_exists($ username))

$ customize_error_validation-> add('user_name','User Already Exist');

if(is_wp_error($ customize_error_validation)){

foreach($ customize_error_validation-> get_error_messages()as $ error){

回声'保持:';

echo $ error。 “
“;

}

}

}
 

function wordpress_user_registration_form_completion(){

global $ customize_error_validation,$ username,$ password,$ email,$ first_name,$ last_name;

if(1> count($ customize_error_validation-> get_error_messages())){

$ userdata = array(

'first_name'=> $ first_name,

'last_name'=> $ last_name,

'user_login'=> $ username,

'user_email'=> $ email,

'user_pass'=> $ password,

 

);

$ user = wp_insert_user($ userdata);

echo'完整的WordPress注册。去 登录页面';

}

}

function wordpress_custom_registration_form_function(){

global $ first_name,$ last_name,$ username,$ password,$ email;

if(isset($ _ POST('submit'))){

wp_reg_form_valid(

$ _ POST( '用户名'),

$ _ POST( '密码'),

$ _ POST( '电子邮件'),

$ _ POST( 'FNAME'),

$ _ POST( 'L-NAME')

);

 

$ username = sanitize_user($ _POST('username'));

$ password = esc_attr($ _POST('password'));

$ email = sanitize_email($ _POST('email'));

$ first_name = sanitize_text_field($ _POST('fname'));

$ last_name = sanitize_text_field($ _POST('lname'));

wordpress_user_registration_form_completion(

$的用户名,

$密码,

$电子邮件,

$ FIRST_NAME,

$姓氏

);

}

wordpress_custom_registration_form(

$的用户名,

$密码,

$电子邮件,

$ FIRST_NAME,

$姓氏

);

}
 

add_shortcode('wp_registration_form','wp_custom_shortcode_registration');

 

function wp_custom_shortcode_registration(){

ob_start();

wordpress_custom_registration_form_function();

return ob_get_clean();

}

自定义验证字段方法

add_filter('registration_errors','custom_validation_error_method',10,2);

function custom_validation_error_method($ errors,$ lname,$ last_name){

 

if(空($ _POST('fname'))||(!empty($ _POST('fname'))&& trim($ _POST('fname'))=='')){

$ errors-> add('fname_error',__('错误: 输入您的名字。' ));

}

 

if(空($ _POST('lname'))||(!empty($ _POST('lname'))&& trim($ _POST('lname'))=='')){

$ errors-> add('lname_error',__('错误:输入你的姓氏。' ));

}

返回$ errors;

}

总结

我希望到现在为止你可以创建一个WordPress自定义注册表单插件。我提供了一个基本模板,您可以扩展和/或修改以满足您的要求。如果您需要澄清一点,请在下面发表评论,我会回复您。

相关文章