찾다
백엔드 개발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>为了简化验证的”痛苦”,我们可以使用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으로 문의하세요.
PHP 세션의 개념을 간단한 용어로 설명하십시오.PHP 세션의 개념을 간단한 용어로 설명하십시오.Apr 26, 2025 am 12:09 AM

phpsessionstrackuserdataacrossmultiplepagerequestsususingauniqueIdStoredInAcookie.here'showtomanagetheMeftically : 1) STARTASESSIONSTART_START () andSTAREDATAIN $ _SESSION.2) RegenerATERATESSESSIDIDAFTERLOGINWITHSESSION_RATERATERATES (True) TopreventSES

PHP 세션에 저장된 모든 값을 어떻게 반복합니까?PHP 세션에 저장된 모든 값을 어떻게 반복합니까?Apr 26, 2025 am 12:06 AM

PHP에서 세션 데이터를 통한 반복은 다음 단계를 통해 달성 할 수 있습니다. 1. Session_start ()를 사용하여 세션을 시작하십시오. 2. $ _session 배열의 모든 키 값 쌍을 통해 Foreach 루프를 통과합니다. 3. 복잡한 데이터 구조를 처리 할 때 is_array () 또는 is_object () 함수를 사용하고 print_r ()를 사용하여 자세한 정보를 출력하십시오. 4. Traversal을 최적화 할 때 페이징을 사용하여 한 번에 많은 양의 데이터를 처리하지 않도록 할 수 있습니다. 이를 통해 실제 프로젝트에서 PHP 세션 데이터를보다 효율적으로 관리하고 사용하는 데 도움이됩니다.

사용자 인증에 세션을 사용하는 방법을 설명하십시오.사용자 인증에 세션을 사용하는 방법을 설명하십시오.Apr 26, 2025 am 12:04 AM

이 세션은 서버 측 상태 관리 메커니즘을 통해 사용자 인증을 인식합니다. 1) 세션 생성 및 고유 ID의 세션 생성, 2) ID는 쿠키를 통해 전달됩니다. 3) ID를 통해 서버 저장 및 세션 데이터에 액세스합니다. 4) 사용자 인증 및 상태 관리가 실현되어 응용 프로그램 보안 및 사용자 경험이 향상됩니다.

PHP 세션에 사용자 이름을 저장하는 방법의 예를 제시하십시오.PHP 세션에 사용자 이름을 저장하는 방법의 예를 제시하십시오.Apr 26, 2025 am 12:03 AM

tostoreauser'snameinaphpsession, startSessionstart_start (), wathsignthenameto $ _session [ 'username']. 1) useSentess_start () toinitializethesession.2) assimeuser'snameto $ _session [ 'username']

PHP 세션이 실패 할 수있는 몇 가지 일반적인 문제는 무엇입니까?PHP 세션이 실패 할 수있는 몇 가지 일반적인 문제는 무엇입니까?Apr 25, 2025 am 12:16 AM

phpsession 실패 이유에는 구성 오류, 쿠키 문제 및 세션 만료가 포함됩니다. 1. 구성 오류 : 올바른 세션을 확인하고 설정합니다. 2. 쿠키 문제 : 쿠키가 올바르게 설정되어 있는지 확인하십시오. 3. 세션 만료 : 세션 시간을 연장하기 위해 세션을 조정합니다 .GC_MAXLIFETIME 값을 조정하십시오.

PHP의 세션 관련 문제를 어떻게 디버그합니까?PHP의 세션 관련 문제를 어떻게 디버그합니까?Apr 25, 2025 am 12:12 AM

PHP에서 세션 문제를 디버그하는 방법 : 1. 세션이 올바르게 시작되었는지 확인하십시오. 2. 세션 ID의 전달을 확인하십시오. 3. 세션 데이터의 저장 및 읽기를 확인하십시오. 4. 서버 구성을 확인하십시오. 세션 ID 및 데이터를 출력, 세션 파일 컨텐츠보기 등을 통해 세션 관련 문제를 효과적으로 진단하고 해결할 수 있습니다.

session_start ()가 여러 번 호출되면 어떻게됩니까?session_start ()가 여러 번 호출되면 어떻게됩니까?Apr 25, 2025 am 12:06 AM

Session_Start ()로 여러 통화를하면 경고 메시지와 가능한 데이터 덮어 쓰기가 발생합니다. 1) PHP는 세션이 시작되었다는 경고를 발행합니다. 2) 세션 데이터의 예상치 못한 덮어 쓰기를 유발할 수 있습니다. 3) Session_status ()를 사용하여 반복 통화를 피하기 위해 세션 상태를 확인하십시오.

PHP에서 세션 수명을 어떻게 구성합니까?PHP에서 세션 수명을 어떻게 구성합니까?Apr 25, 2025 am 12:05 AM

SESSION.GC_MAXLIFETIME 및 SESSION.COOKIE_LIFETIME을 설정하여 PHP에서 세션 수명을 구성 할 수 있습니다. 1) SESSION.GC_MAXLIFETIME 서버 측 세션 데이터의 생존 시간을 제어합니다. 2) 세션 .Cookie_Lifetime 클라이언트 쿠키의 수명주기를 제어합니다. 0으로 설정하면 브라우저가 닫히면 쿠키가 만료됩니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기