WordPress默認(rèn)的注冊表單僅由兩個字段組成—-用戶名和郵箱。
成都創(chuàng)新互聯(lián)公司,為您提供成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、網(wǎng)站營銷推廣、網(wǎng)站開發(fā)設(shè)計,對服務(wù)航空箱等多個行業(yè)擁有豐富的網(wǎng)站建設(shè)及推廣經(jīng)驗(yàn)。成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)公司成立于2013年,提供專業(yè)網(wǎng)站制作報價服務(wù),我們深知市場的競爭激烈,認(rèn)真對待每位客戶,為客戶提供賞心悅目的作品。 與客戶共同發(fā)展進(jìn)步,是我們永遠(yuǎn)的責(zé)任!
這個僅有的用戶名和郵箱表單字段使得注冊速度非常的簡單。首先,你輸入一個用戶名,然后輸入郵箱,這個郵箱就是用來接收密碼的。接下來,你使用郵箱接收到的密碼登陸站點(diǎn),并且完成個人資料,把密碼修改成簡單易記得。
僅僅是在站點(diǎn)注冊,而不是讓用戶區(qū)經(jīng)歷這些壓力,那為什么除了用戶名和郵箱之外,不提供一個直接的、包含一些額外重要的表單字段,例如密碼、個人的URL、個人簡介、昵稱和他們的姓名的注冊表單供用戶使用呢?
這對于像Tuts+的多用戶網(wǎng)站是非常有用的。
在這篇文章中,我們將使用下列的表單字段建立一個自定義的表單注冊插件:
username
password
website URL
first name
last name
nickname
biography (or an about section)
這個自定義表單插件可以通過使用短代碼和聯(lián)系模板整合到WordPress中。
利用短代碼模板,你可以在你的站點(diǎn)中創(chuàng)建一個正式的注冊頁面。你也可以再一篇發(fā)表的文章中是用短代碼模板,這樣用戶就可以在閱讀完你的文章之后進(jìn)行注冊。
如果你想添加一個注冊表單在你網(wǎng)站側(cè)邊欄的某個具體位置,你可以對WordPress主題中僅僅期望放置標(biāo)簽?zāi)0宓奈恢眠M(jìn)行編輯,來創(chuàng)建需要的注冊表單。
在創(chuàng)建之前,需要注意的是,用戶名、密碼和電子郵件字段是必需的。
當(dāng)我們編寫驗(yàn)證函數(shù)時,我們將強(qiáng)制執(zhí)行這些規(guī)則。
構(gòu)建插件
正如說的那樣,我們開始對插件編碼。首先,包含插件的頭部:
?php
/*
Plugin Name: Custom Registration
Plugin URI:
Description: Updates user rating based on number of posts.
Version: 1.0
Author: Agbonghama Collins
Author URI:
*/
接下來,我們創(chuàng)建一個包含注冊表單的HTML代碼的PHP函數(shù):
function registration_form( $username, $password, $email, $website, $first_name, $last_name, $nickname, $bio ) {
echo '
style
div {
margin-bottom:2px;
}
input{
margin-bottom:4px;
}
/style
';
echo '
form action="' . $_SERVER['REQUEST_URI'] . '" method="post"
div
label for="username"Username strong*/strong/label
input type="text" name="username" value="' . ( isset( $_POST['username'] ) ? $username : null ) . '"
/div
div
label for="password"Password strong*/strong/label
input type="password" name="password" value="' . ( isset( $_POST['password'] ) ? $password : null ) . '"
/div
div
label for="email"Email strong*/strong/label
input type="text" name="email" value="' . ( isset( $_POST['email']) ? $email : null ) . '"
/div
div
label for="website"Website/label
input type="text" name="website" value="' . ( isset( $_POST['website']) ? $website : null ) . '"
/div
div
label for="firstname"First Name/label
input type="text" name="fname" value="' . ( isset( $_POST['fname']) ? $first_name : null ) . '"
/div
div
label for="website"Last Name/label
input type="text" name="lname" value="' . ( isset( $_POST['lname']) ? $last_name : null ) . '"
/div
div
label for="nickname"Nickname/label
input type="text" name="nickname" value="' . ( isset( $_POST['nickname']) ? $nickname : null ) . '"
/div
div
label for="bio"About / Bio/label
textarea name="bio"' . ( isset( $_POST['bio']) ? $bio : null ) . '/textarea
/div
input type="submit" name="submit" value="Register"/
/form
';
}
請注意注冊字段是作為變量傳遞給上面的函數(shù)。在函數(shù)中,你會看到下面代碼的示例:
( isset( $_POST['lname'] ) ? $last_name : null )
這個三元操作符是檢查全局變量數(shù)組$_POST是否包含數(shù)據(jù),如果有數(shù)據(jù),就把填充的表單字段值保存以便進(jìn)入下一個字段。
除非你驗(yàn)證了表單數(shù)據(jù)并且清空了表單數(shù)據(jù),一個注冊表單才能算完成,否則就不算。因此,我們要創(chuàng)建一個名為 registration_validation的表單驗(yàn)證函數(shù)。
為了簡化驗(yàn)證的”痛苦”,我們可以使用WordPress中的 WP_Error 類。跟著我編寫驗(yàn)證函數(shù):
1、創(chuàng)建函數(shù),并將注冊表單的字段值作為函數(shù)的參數(shù)傳遞進(jìn)來
function registration_validation( $username, $password, $email, $website, $first_name, $last_name, $nickname, $bio ) {
2、實(shí)例化 WP_Error 類,并把實(shí)例作為全局變量,以便于我們可以再函數(shù)的作用域之外使用。
global $reg_errors;
$reg_errors = new WP_Error;
3、記?。何覀冋f的用戶名、密碼和電子郵件是必填的,不要忽略了。為了執(zhí)行這個規(guī)則,我們需要檢查它們中任何一個是否為空。如果為空,我們就將錯誤信息追加給 WP_Error 類的實(shí)例。
if ( empty( $username ) || empty( $password ) || empty( $email ) ) {
$reg_errors-add('field', 'Required form field is missing');
}
4、我們也可以確保用戶名的字符個數(shù)不小于4
if ( 4 strlen( $username ) ) {
$reg_errors-add( 'username_length', 'Username too short. At least 4 characters is required' );
}
5、檢查用戶名是否被注冊了
if ( username_exists( $username ) )
$reg_errors-add('user_name', 'Sorry, that username already exists!');
6、利用WordPress的 validate_username 函數(shù)確保用戶名是可用的
if ( ! validate_username( $username ) ) {
$reg_errors-add( 'username_invalid', 'Sorry, the username you entered is not valid' );
}
7、確保用戶輸入的密碼的字符個數(shù)不小于5
if ( 5 strlen( $password ) ) {
$reg_errors-add( 'password', 'Password length must be greater than 5' );
}
8、檢查電子郵件是否有效
if ( !is_email( $email ) ) {
$reg_errors-add( 'email_invalid', 'Email is not valid' );
}
9、檢查電子郵件是否被注冊
if ( !is_email( $email ) ) {
$reg_errors-add( 'email_invalid', 'Email is not valid' );
}
10.、如果用戶填寫了網(wǎng)站字段,需要檢查其是否有效
if ( ! empty( $website ) ) {
if ( ! filter_var( $website, FILTER_VALIDATE_URL ) ) {
$reg_errors-add( 'website', 'Website is not a valid URL' );
}
}
11、最后,我們在WP_Error實(shí)例中對錯誤進(jìn)行循環(huán),并顯示個別的錯誤
if ( is_wp_error( $reg_errors ) ) {
foreach ( $reg_errors-get_error_messages() as $error ) {
echo 'div';
echo 'strongERROR/strong:';
echo $error . 'br/';
echo '/div';
}
}
這樣,驗(yàn)證函數(shù)就完成了。接下來是 complete_registration()函數(shù),用于處理用戶注冊。用戶的注冊真正完成是通過wp_insert_user函數(shù),
用戶的數(shù)據(jù)作為數(shù)據(jù)保存后可以作為此函數(shù)的參數(shù)。
function complete_registration() {
global $reg_errors, $username, $password, $email, $website, $first_name, $last_name, $nickname, $bio;
if ( 1 count( $reg_errors-get_error_messages() ) ) {
$userdata = array(
'user_login' = $username,
'user_email' = $email,
'user_pass' = $password,
'user_url' = $website,
'first_name' = $first_name,
'last_name' = $last_name,
'nickname' = $nickname,
'description' = $bio,
);
$user = wp_insert_user( $userdata );
echo 'Registration complete. Goto a href="' . get_site_url() . '/wp-login.php"login page/a.';
}
}
在上面的函數(shù)中,我們將$reg_errors作為WP_Error的實(shí)例,并將表單字段作為全局變量以便于可以再全局作用域中使用。
我們需要檢查$reg_errors是否包含任何錯誤,如果沒有錯誤,則將用戶注冊信息插入到WordPress的數(shù)據(jù)庫并用登陸鏈接來顯示注冊完成的信息。
然后,把所有我們之前創(chuàng)建的函數(shù)全部放在全局函數(shù) custom_registration_function()之中
function custom_registration_function() {
if ( isset($_POST['submit'] ) ) {
registration_validation(
$_POST['username'],
$_POST['password'],
$_POST['email'],
$_POST['website'],
$_POST['fname'],
$_POST['lname'],
$_POST['nickname'],
$_POST['bio']
);
// sanitize user form input
global $username, $password, $email, $website, $first_name, $last_name, $nickname, $bio;
$username = sanitize_user( $_POST['username'] );
$password = esc_attr( $_POST['password'] );
$email = sanitize_email( $_POST['email'] );
$website = esc_url( $_POST['website'] );
$first_name = sanitize_text_field( $_POST['fname'] );
$last_name = sanitize_text_field( $_POST['lname'] );
$nickname = sanitize_text_field( $_POST['nickname'] );
$bio = esc_textarea( $_POST['bio'] );
// call @function complete_registration to create the user
// only when no WP_error is found
complete_registration(
$username,
$password,
$email,
$website,
$first_name,
$last_name,
$nickname,
$bio
);
}
registration_form(
$username,
$password,
$email,
$website,
$first_name,
$last_name,
$nickname,
$bio
);
}
我需要說明一下全局函數(shù) custom_registration_function()中有哪些代碼。
首先,我通過檢查$_POST['submit']是否是空來確定表單是否提交。如果提交了,我就調(diào)用
registration_validation()函數(shù)來驗(yàn)證用戶提交的表單.
然后,確保表單數(shù)據(jù)的有效性并將有效的數(shù)據(jù)在表單字段域之后用一個變量命名。最后,調(diào)用
complete_registration()函數(shù)保存用戶。我需要調(diào)用registration_form()函數(shù)來顯示用戶注冊表單。
我之前提到過,我打算用短代碼模板來支持注冊插件。下面就是短代碼模的支持代碼:
// Register a new shortcode: [cr_custom_registration]
add_shortcode( 'cr_custom_registration', 'custom_registration_shortcode' );
// The callback function that will replace [book]
function custom_registration_shortcode() {
ob_start();
custom_registration_function();
return ob_get_clean();
}
到這里為止,我們已經(jīng)完成了插件
大家在wordpress建立初期,會碰到建立新用戶前臺注冊登錄的問題,是通過發(fā)送密碼的形式,來成功注冊登錄。
今天為大家介紹利用SMTP進(jìn)行發(fā)郵件。wordpress郵箱配置。
安裝使用wordpress的SMTP插件完成配置
此方法我已經(jīng)在用,完全有效。首先在wp后臺選擇“添加插件”然后搜索“SMTP”,其搜索結(jié)果第一個就是wordp的SMTP插件,然后點(diǎn)擊安裝,即可再無憂的php空間中完成在線安裝此插件。將SMTP插件啟用后,再設(shè)置中會多出一個“SMTP設(shè)置”選項(xiàng),我們進(jìn)入后將SMTP郵件信息設(shè)置好就可以正常使用了。如下圖:
只要按著上面的方法就可以完成wordpress的前臺注冊發(fā)送密碼并登錄網(wǎng)站。
一些常用的wordpress插件:
1、Akismet
Akismet 是 WordPress 官方推薦的一款 WordPress 防垃圾評論插件,也是默認(rèn)已安裝的插件。
2、WP-Postviews
最好且最流行的WordPress瀏覽次數(shù)統(tǒng)計插件莫過于WP-Postviews,該插件可以統(tǒng)計每篇文章的瀏覽次數(shù),并且可以獲取最受歡迎(瀏覽次數(shù)最多)的文章列表。
3、WP No Category Base
默認(rèn)情況下,WordPress分類目錄的鏈接自動添加了 /category/ 標(biāo)志,如果你希望去掉它, WP No Category Base 是個不錯的選擇!
4、Google XML Sitemaps
Google XML Sitemaps 是一個使用非常廣泛的XML網(wǎng)站地圖插件,通過它,你可以很輕松為你的 WordPress 博客生成 Sitemap,方便搜索引擎抓取你博客的文章。
5、Baidu Sitemap Generator
通過它可以生成百度 Sitemap XML 文件。
6、DB Cache Reloaded Fix + Hyper Cache
DB Cache Reloaded Fix是一個出色的WordPress數(shù)據(jù)庫緩存插件,可以大大減少對數(shù)據(jù)庫的請求次數(shù)。
Hyper Cache 是非常小巧但很強(qiáng)大的WordPress緩存插件,設(shè)置簡單,完美支持Gzip壓縮,可緩存404頁,重定向頁面等。
推薦將這兩個插件一起搭配使用,效果很不錯。
7、WP Super Cache
WP Super Cache 是使用的比較多的緩存插件,功能也比較齊全。安裝 WP Super Cache 插件并啟用Gzip選項(xiàng)。它可以為訪問者只加載那些合適的緩存內(nèi)容,而不是加載你的WordPress站點(diǎn)中的每一個腳本和元素??梢院艽蠼档蛶捳加?,避免網(wǎng)站在流量高峰時崩潰。
8、SEO Friendly Images
SEO Friendly Images 可以批量給你文章中的圖片添加 alt 和 title 信息,提高SEO效果。
9、WP Keyword Link
WP Keyword Link 是一款 WordPress SEO插件,原來是老外的插件,不支持中文,后來 柳城 在作者同意下,修改使之支持中文關(guān)鍵詞。通過簡單設(shè)置,可以為你的wordpress博客添加關(guān)鍵詞的鏈接,給文章加上內(nèi)部鏈接有利于增加搜索引擎收錄,該插件完美支持中英文關(guān)鍵詞。
10、WP-DB-Backup
WordPress Database Backup 是一款專門備份數(shù)據(jù)庫的插件,支持手動備份和自動定時備份,可以備份保存在主機(jī)空間,下載到本地或者發(fā)送到指定郵箱。
11、BackWPup
BackWPup 是一款超級強(qiáng)大的WordPress備份插件,支持全自動的定時備份,支持備份到FTP空間、郵箱、Dropbox、Amazon S3 ,可以備份數(shù)據(jù)庫、網(wǎng)站的任何文件。
12、Simple URLs
Simple URLs是一個簡單實(shí)用的WordPress外鏈轉(zhuǎn)內(nèi)鏈短網(wǎng)址插件,調(diào)用了wordpress本身的發(fā)布功能,添加個鏈接,就向發(fā)布文章一樣簡單,還支持統(tǒng)計鏈接點(diǎn)擊次數(shù)哦。做淘寶客或聯(lián)盟推薦的不妨試試。
13、Redirection
Redirection 是一款功能非常強(qiáng)大的WordPress 301重定向插件,對于更換域名或者修改網(wǎng)站安裝目錄,修改分類目錄等,都可以很方便地進(jìn)行正確轉(zhuǎn)向。Redirection 本身就包含中文語言包,使用起來應(yīng)該還是比較方便的。
14、CubePoints
CubePoints 是目前免費(fèi)的最強(qiáng)大的 WordPress會員積分插件,這個插件有很多集成的模塊,支持設(shè)置設(shè)定積分前后綴,設(shè)定設(shè)置積分增長規(guī)則,設(shè)置收費(fèi)內(nèi)容,積分互轉(zhuǎn),積分排行版等等。對于開放注冊的站點(diǎn)來說,該插件是個提高用戶積極性的良好工具!
15、Contact Form 7
Contact Form 7 是一款簡單易用擴(kuò)展性靈活的WordPress聯(lián)系表單插件,可以自定義各式各樣不同類型的表單功能,而且支持自定義接收郵件,Ajax提交和 jQuery表單插件支持。可結(jié)合Akismet過濾垃圾郵件,同時也支持CAPTCHA反垃圾郵件,表單域元素支持各種最常見的:單選框、復(fù)選框、文本框、下拉菜單、按鈕、文件上傳等多種表單域。