目录
如何利用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 11:57 AM

WordPress 错误解决指南:500 内部服务器错误:禁用插件或检查服务器错误日志。404 未找到页面:检查 permalink 并确保页面链接正确。白屏死机:增加服务器 PHP 内存限制。数据库连接错误:检查数据库服务器状态和 WordPress 配置。其他技巧:启用调试模式、检查错误日志和寻求支持。预防错误:定期更新 WordPress、仅安装必要插件、定期备份网站和优化网站性能。

wordpress网站账号登录 wordpress网站账号登录 Apr 20, 2025 am 09:06 AM

登录 WordPress 网站账号的步骤:访问登录页面:输入网站网址加上 "/wp-login.php"。输入用户名和密码。点击“登录”。验证两步验证(可选)。成功登录后,您将看到网站仪表盘。

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. 创建评论指

wordpress主题头部图片如何更换 wordpress主题头部图片如何更换 Apr 20, 2025 am 10:00 AM

更换 WordPress 主题头部图片的分步指南:登录 WordPress 仪表盘,导航至“外观”&gt;“主题”。选择要编辑的主题,然后单击“自定义”。打开“主题选项”面板并寻找“网站标头”或“头部图片”选项。单击“选择图像”按钮并上传新的头部图片。裁剪图像并单击“保存并裁剪”。单击“保存并发布”按钮以更新更改。

wordpress怎么写页头 wordpress怎么写页头 Apr 20, 2025 pm 12:09 PM

在WordPress中创建自定义页头的步骤如下:编辑主题文件“header.php”。添加您的网站名称和描述。创建导航菜单。添加搜索栏。保存更改并查看您的自定义页头。

wordpress主机怎么建站 wordpress主机怎么建站 Apr 20, 2025 am 11:12 AM

要使用 WordPress 主机建站,需要:选择一个可靠的主机提供商。购买一个域名。设置 WordPress 主机帐户。选择一个主题。添加页面和文章。安装插件。自定义您的网站。发布您的网站。

See all articles