目錄
如何利用WordPress创建自定义注册表单插件,wordpress表单
自定义表单插件Wordpress Form Manager怎使用
一个可以自定义评论表单的wordpress插件,增加输入手机号,去掉email与网站填写
首頁 後端開發 php教程 如何利用WordPress创建自定义注册表单插件,wordpress表单_PHP教程

如何利用WordPress创建自定义注册表单插件,wordpress表单_PHP教程

Jul 13, 2016 am 10:17 AM
wordpress 創建 使用 如何 外掛 註冊 自訂 表單

如何利用WordPress创建自定义注册表单插件,wordpress表单

来源:http://www.ido321.com/1031.html

 

原文:Creating a Custom WordPress Registration Form Plugin

译文:创建一个定制的WordPress插件注册表单

译者:dwqs

开门见山,WordPress提供了一个自定义的注册表单供新用户使用,或者当添加一个新用户到已经存在的WordPress站点。但是如果你想实现一个自定义的注册表单而没有显示WordPress仪表盘的选项呢?

在这篇文章中,我们将学会怎么使用标签模板和短代码模板的联合体在WordPress中创建一个自定义的注册表单。

WordPress默认的注册表单仅由两个字段组成—-用户名和邮箱。

这个仅有的用户名和邮箱表单字段使得注册速度非常的简单。首先,你输入一个用户名,然后输入邮箱,这个邮箱就是用来接收密码的。接下来,你使用邮箱接收到的密码登陆站点,并且完成个人资料,把密码修改成简单易记得。

仅仅是在站点注册,而不是让用户区经历这些压力,那为什么除了用户名和邮箱之外,不提供一个直接的、包含一些额外重要的表单字段,例如密码、个人的URL、个人简介、昵称和他们的姓名的注册表单供用户使用呢?

这对于像Tuts+的多用户网站是非常有用的。

在这篇文章中,我们将使用下列的表单字段建立一个自定义的表单注册插件:

  • username
  • password
  • email
  • website URL
  • first name
  • last name
  • nickname
  • biography (or an about section)

这个自定义表单插件可以通过使用短代码和联系模板整合到WordPress中。

利用短代码模板,你可以在你的站点中创建一个正式的注册页面。你也可以再一篇发表的文章中是用短代码模板,这样用户就可以在阅读完你的文章之后进行注册。

如果你想添加一个注册表单在你网站侧边栏的某个具体位置,你可以对WordPress主题中仅仅期望放置标签模板的位置进行编辑,来创建需要的注册表单。

在创建之前,需要注意的是,用户名、密码和电子邮件字段是必需的。

当我们编写验证函数时,我们将强制执行这些规则。

构建插件

        正如说的那样,我们开始对插件编码。首先,包含插件的头部:

<span><?php
<span>/*</span>
<span>  Plugin Name: Custom Registration</span>
<span>  Plugin URI: http://code.tutsplus.com</span>
<span>  Description: Updates user rating based on number of posts.</span>
<span>  Version: 1.0</span>
<span>  Author: Agbonghama Collins</span>
<span>  Author URI: http://tech4sky.com</span>
<span> */</span></span>
登入後複製

接下来,我们创建一个包含注册表单的HTML代码的PHP函数:

<span>function</span><span> registration_form( $username, $password, $email, $website, $first_name, $last_name, $nickname, $bio ) {
    <span>echo</span> <span>'
    <style>
    div {
        margin-bottom:2px;
    }
     
    input{
        margin-bottom:4px;
    }
    </style>
    '</span>;
 
    <span>echo</span> <span>'
    <form action="'</span> . $_SERVER[<span>'REQUEST_URI'</span>] . <span>'" method="post">
    <div>
    <label for="username">Username <strong>*</strong></label>
    <input type="text" name="username" value="'</span> . ( <span>isset</span>( $_POST[<span>'username'</span>] ) ? $username : <span>null</span> ) . <span>'">
    </div>
     
    <div>
    <label for="password">Password <strong>*</strong></label>
    <input type="password" name="password" value="'</span> . ( <span>isset</span>( $_POST[<span>'password'</span>] ) ? $password : <span>null</span> ) . <span>'">
    </div>
     
    <div>
    <label for="email">Email <strong>*</strong></label>
    <input type="text" name="email" value="'</span> . ( <span>isset</span>( $_POST[<span>'email'</span>]) ? $email : <span>null</span> ) . <span>'">
    </div>
     
    <div>
    <label for="website">Website</label>
    <input type="text" name="website" value="'</span> . ( <span>isset</span>( $_POST[<span>'website'</span>]) ? $website : <span>null</span> ) . <span>'">
    </div>
     
    <div>
    <label for="firstname">First Name</label>
    <input type="text" name="fname" value="'</span> . ( <span>isset</span>( $_POST[<span>'fname'</span>]) ? $first_name : <span>null</span> ) . <span>'">
    </div>
     
    <div>
    <label for="website">Last Name</label>
    <input type="text" name="lname" value="'</span> . ( <span>isset</span>( $_POST[<span>'lname'</span>]) ? $last_name : <span>null</span> ) . <span>'">
    </div>
     
    <div>
    <label for="nickname">Nickname</label>
    <input type="text" name="nickname" value="'</span> . ( <span>isset</span>( $_POST[<span>'nickname'</span>]) ? $nickname : <span>null</span> ) . <span>'">
    </div>
     
    <div>
    <label for="bio">About / Bio</label>
    <textarea name="bio">'</span> . ( <span>isset</span>( $_POST[<span>'bio'</span>]) ? $bio : <span>null</span> ) . <span>'</textarea>
    </div>
    <input type="submit" name="submit" value="Register"/>
    </form>
    '</span>;
}</span>
登入後複製

请注意注册字段是作为变量传递给上面的函数。在函数中,你会看到下面代码的示例:

<span>( <span>isset</span>( $_POST[<span>'lname'</span>] ) ? $last_name : <span>null</span> )</span>
登入後複製

这个三元操作符是检查全局变量数组$_POST是否包含数据,如果有数据,就把填充的表单字段值保存以便进入下一个字段。

除非你验证了表单数据并且清空了表单数据,一个注册表单才能算完成,否则就不算。因此,我们要创建一个名为registration_validation<span>的表单验证函数。</span>

<span>为了简化验证的&rdquo;痛苦&rdquo;,我们可以使用WordPress中的 <span>WP_Error</span> 类。跟着我编写验证函数:</span>

<span>1、创建函数,并将注册表单的字段值作为函数的参数传递进来</span>

<span>function</span><span> registration_validation( $username, $password, $email, $website, $first_name, $last_name, $nickname, $bio )  {</span>
登入後複製

2、实例化WP_Error 类,并把实例作为全局变量,以便于我们可以再函数的作用域之外使用。

<span>global</span><span> $reg_errors;
$reg_errors = <span>new</span> WP_Error;</span>
登入後複製

3、记住:我们说的用户名、密码和电子邮件是必填的,不要忽略了。为了执行这个规则,我们需要检查它们中任何一个是否为空。如果为空,我们就将错误信息追加给WP_Error 类的实例。

<span>if</span><span> ( <span>empty</span>( $username ) || <span>empty</span>( $password ) || <span>empty</span>( $email ) ) {
    $reg_errors->add(<span>'field'</span>, <span>'Required form field is missing'</span>);
}</span>
登入後複製

4、我们也可以确保用户名的字符个数不小于4

<span>if</span><span> ( 4 > strlen( $username ) ) {
    $reg_errors->add( <span>'username_length'</span>, <span>'Username too short. At least 4 characters is required'</span> );
}</span>
登入後複製

5、检查用户名是否被注册了

<span>if</span><span> ( username_exists( $username ) )
    $reg_errors->add(<span>'user_name'</span>, <span>'Sorry, that username already exists!'</span>);</span>
登入後複製

6、利用WordPress的validate_username函数确保用户名是可用的

<span>if</span><span> ( ! validate_username( $username ) ) {
    $reg_errors->add( <span>'username_invalid'</span>, <span>'Sorry, the username you entered is not valid'</span> );
}</span>
登入後複製

7、确保用户输入的密码的字符个数不小于5

<span>if</span><span> ( 5 > strlen( $password ) ) {
        $reg_errors->add( <span>'password'</span>, <span>'Password length must be greater than 5'</span> );
    }</span>
登入後複製

8、检查电子邮件是否有效

<span>if</span><span> ( !is_email( $email ) ) {
    $reg_errors->add( <span>'email_invalid'</span>, <span>'Email is not valid'</span> );
}</span>
登入後複製
登入後複製
9、检查电子邮件是否被注册
<span>if</span><span> ( !is_email( $email ) ) {
    $reg_errors->add( <span>'email_invalid'</span>, <span>'Email is not valid'</span> );
}</span>
登入後複製
登入後複製

10.、如果用户填写了网站字段,需要检查其是否有效
<span>if</span><span> ( ! <span>empty</span>( $website ) ) {
    <span>if</span> ( ! filter_var( $website, FILTER_VALIDATE_URL ) ) {
        $reg_errors->add( <span>'website'</span>, <span>'Website is not a valid URL'</span> );
    }
}</span>
登入後複製

11、最后,我们在WP_Error实例中对错误进行循环,并显示个别的错误
<span>if</span><span> ( is_wp_error( $reg_errors ) ) {
 
    <span>foreach</span> ( $reg_errors->get_error_messages() <span>as</span> $error ) {
     
        <span>echo</span> <span>'<div>'</span>;
        <span>echo</span> <span>'<strong>ERROR</strong>:'</span>;
        <span>echo</span> $error . <span>'<br/>'</span>;
        <span>echo</span> <span>'</div>'</span>;
         
    }
 
}</span>
登入後複製

这样,验证函数就完成了。接下来是complete_registration()<span>函数,用于处理用户注册。用户的注册真正完成是通过wp_insert_user函数,</span> <span>用户的数据作为数据保存后可以作为此函数的参数。</span> <span><br /> </span>
<span>function</span><span> complete_registration() {
    <span>global</span> $reg_errors, $username, $password, $email, $website, $first_name, $last_name, $nickname, $bio;
    <span>if</span> ( 1 > count( $reg_errors->get_error_messages() ) ) {
        $userdata = <span>array</span>(
        <span>'user_login'</span>    =>   $username,
        <span>'user_email'</span>    =>   $email,
        <span>'user_pass'</span>     =>   $password,
        <span>'user_url'</span>      =>   $website,
        <span>'first_name'</span>    =>   $first_name,
        <span>'last_name'</span>     =>   $last_name,
        <span>'nickname'</span>      =>   $nickname,
        <span>'description'</span>   =>   $bio,
        );
        $user = wp_insert_user( $userdata );
        <span>echo</span> <span>'Registration complete. Goto <a href="'</span> . get_site_url() . <span>'/wp-login.php">login page</a>.'</span>;  
    }
}</span>
登入後複製

在上面的函数中,我们将$reg_errors作为WP_Error的实例,并将表单字段作为全局变量以便于可以再全局作用域中使用。

我们需要检查$reg_errors是否包含任何错误,如果没有错误,则将用户注册信息插入到WordPress的数据库并用登陆链接来显示注册完成的信息。

然后,把所有我们之前创建的函数全部放在全局函数custom_registration_function()<span>之中</span>

<span>function</span><span> custom_registration_function() {
    <span>if</span> ( <span>isset</span>($_POST[<span>'submit'</span>] ) ) {
        registration_validation(
        $_POST[<span>'username'</span>],
        $_POST[<span>'password'</span>],
        $_POST[<span>'email'</span>],
        $_POST[<span>'website'</span>],
        $_POST[<span>'fname'</span>],
        $_POST[<span>'lname'</span>],
        $_POST[<span>'nickname'</span>],
        $_POST[<span>'bio'</span>]
        );
         
        <span>// sanitize user form input</span>
        <span>global</span> $username, $password, $email, $website, $first_name, $last_name, $nickname, $bio;
        $username   =   sanitize_user( $_POST[<span>'username'</span>] );
        $password   =   esc_attr( $_POST[<span>'password'</span>] );
        $email      =   sanitize_email( $_POST[<span>'email'</span>] );
        $website    =   esc_url( $_POST[<span>'website'</span>] );
        $first_name =   sanitize_text_field( $_POST[<span>'fname'</span>] );
        $last_name  =   sanitize_text_field( $_POST[<span>'lname'</span>] );
        $nickname   =   sanitize_text_field( $_POST[<span>'nickname'</span>] );
        $bio        =   esc_textarea( $_POST[<span>'bio'</span>] );
 
        <span>// call @function complete_registration to create the user</span>
        <span>// only when no WP_error is found</span>
        complete_registration(
        $username,
        $password,
        $email,
        $website,
        $first_name,
        $last_name,
        $nickname,
        $bio
        );
    }
 
    registration_form(
        $username,
        $password,
        $email,
        $website,
        $first_name,
        $last_name,
        $nickname,
        $bio
        );
}</span>
登入後複製

我需要说明一下全局函数custom_registration_function()<span>中有哪些代码。</span>

<span> 首先,我通过检查<code>$_POST['submit']<span>是否是空来确定表单是否提交。如果提交了,我就调用</span>

<span><code><span>registration_validation()函数来验证用户提交的表单.</span>

<code><span>然后,确保表单数据的有效性并将有效的数据在表单字段域之后用一个变量命名。最后,调用</span>

<code><span>complete_registration()函数保存用户。我需要调用registration_form()函数来显示用户注册表单。</span>

<code><span>我之前提到过,我打算用短代码模板来支持注册插件。下面就是短代码模的支持代码:</span>

<span>// Register a new shortcode: [cr_custom_registration]</span><span>
add_shortcode( <span>'cr_custom_registration'</span>, <span>'custom_registration_shortcode'</span> );
 
<span>// The callback function that will replace [book]</span>
<span>function</span> custom_registration_shortcode() {
    ob_start();
    custom_registration_function();
    <span>return</span> ob_get_clean();
}</span>
登入後複製

 

到这里为止,我们已经完成了插件,下面的一张图片展示了注册表单的外观。

注意,你可能不会得到完全相同的外观,因为WordPress站点的CSS样式不同。

应用插件

        为了在WordPress的文章页或独立页面使用这个插件,可以加入以下代码:[cr_custom_registration]

<span>也可以添加列出的模板标记<code><?php custom_registration_function(); ?>.,这样可以让表单插件成

<span>为WordPress主题的一个部分。你可以从这篇文章的附加代码得到这个插件。</span>

 

<span><strong>总结</strong></span>

<span><strong>   </strong>在这篇文章中,我们一步步创建了一个自定义注册表单并添加到WordPress站点。你可以添加额外字段,进一</span>

<span>步扩展这个注册表单,例如用户角色,AOL IM 账户,但是确保数据时有效的。</span>

<span>    如果你有任何问题或建议你,可以留下评论。</span>

 

<span>下一篇:</span>如何在网站中添加音乐 <span><br></span>

<span><br></span><span><br></span>

 

自定义表单插件Wordpress Form Manager怎使用

category-6.php页面有引入wp_head和wp_footer么,插件需要的资源文件需要这两个来加载
 

一个可以自定义评论表单的wordpress插件,增加输入手机号,去掉email与网站填写

这还要插件?!我的wordpress基本上没用插件,这么简单的功能,花个把小时写一个……
插件越多越慢
 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/894761.htmlTechArticle如何利用WordPress创建自定义注册表单插件,wordpress表单 来源:http://www.ido321.com/1031.html 原文:Creating a Custom WordPress Registration Form Plugin 译文...
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

wordpress文章列表怎麼調 wordpress文章列表怎麼調 Apr 20, 2025 am 10:48 AM

有四種方法可以調整 WordPress 文章列表:使用主題選項、使用插件(如 Post Types Order、WP Post List、Boxy Stuff)、使用代碼(在 functions.php 文件中添加設置)或直接修改 WordPress 數據庫。

wordpress屏蔽ip的插件有哪些 wordpress屏蔽ip的插件有哪些 Apr 20, 2025 am 08:27 AM

WordPress 屏蔽 IP 的插件選擇至關重要。可考慮以下類型:基於 .htaccess:高效,但操作複雜;數據庫操作:靈活,但效率較低;基於防火牆:安全性能高,但配置複雜;自行編寫:最高控制權,但需要更多技術水平。

wordpress編輯日期怎麼取消 wordpress編輯日期怎麼取消 Apr 20, 2025 am 10:54 AM

WordPress 編輯日期可以通過三種方法取消:1. 安裝 Enable Post Date Disable 插件;2. 在 functions.php 文件中添加代碼;3. 手動編輯 wp_posts 表中的 post_modified 列。

wordpress怎麼寫頁頭 wordpress怎麼寫頁頭 Apr 20, 2025 pm 12:09 PM

在WordPress中創建自定義頁頭的步驟如下:編輯主題文件“header.php”。添加您的網站名稱和描述。創建導航菜單。添加搜索欄。保存更改並查看您的自定義頁頭。

wordpress主題頭部圖片如何更換 wordpress主題頭部圖片如何更換 Apr 20, 2025 am 10:00 AM

更換 WordPress 主題頭部圖片的分步指南:登錄 WordPress 儀錶盤,導航至“外觀”&gt;“主題”。選擇要編輯的主題,然後單擊“自定義”。打開“主題選項”面板並尋找“網站標頭”或“頭部圖片”選項。單擊“選擇圖像”按鈕並上傳新的頭部圖片。裁剪圖像並單擊“保存並裁剪”。單擊“保存並發布”按鈕以更新更改。

wordpress主機怎麼建站 wordpress主機怎麼建站 Apr 20, 2025 am 11:12 AM

要使用 WordPress 主機建站,需要:選擇一個可靠的主機提供商。購買一個域名。設置 WordPress 主機帳戶。選擇一個主題。添加頁面和文章。安裝插件。自定義您的網站。發布您的網站。

wordpress出現錯誤怎麼辦 wordpress出現錯誤怎麼辦 Apr 20, 2025 am 11:57 AM

WordPress 錯誤解決指南:500 內部服務器錯誤:禁用插件或檢查服務器錯誤日誌。 404 未找到頁面:檢查 permalink 並確保頁面鏈接正確。白屏死機:增加服務器 PHP 內存限制。數據庫連接錯誤:檢查數據庫服務器狀態和 WordPress 配置。其他技巧:啟用調試模式、檢查錯誤日誌和尋求支持。預防錯誤:定期更新 WordPress、僅安裝必要插件、定期備份網站和優化網站性能。

wordpress評論怎麼顯示 wordpress評論怎麼顯示 Apr 20, 2025 pm 12:06 PM

WordPress 網站中啟用評論功能:1. 登錄管理面板,轉到 "設置"-"討論",勾選 "允許評論";2. 選擇顯示評論的位置;3. 自定義評論表單;4. 管理評論,批准、拒絕或刪除;5. 使用 &lt;?php comments_template(); ?&gt; 標籤顯示評論;6. 啟用嵌套評論;7. 調整評論外形;8. 使用插件和驗證碼防止垃圾評論;9. 鼓勵用戶使用 Gravatar 頭像;10. 創建評論指

See all articles