通過插件構建自定義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自定義註冊表單插件。我提供了一個基本模板,您可以擴展和/或修改以滿足您的要求。如果您需要澄清一點,請在下面發表評論,我會回復您。

相關文章