箱から出して意味し、ワードプレスは、カスタム登録フォームを提供し、新しいユーザーを作成、または既存のWordPressのサイトに新しいユーザーを追加するために使用することができます。カスタム登録フォームを実装したい場合は、WordPressのオプションは、コントロールパネルに表示されていませんか?
このチュートリアルでは、カスタム登録フォームWordPressのテンプレートタグを作成し、簡単なコードの組み合わせを使用する方法を学びます。
デフォルトの登録フォームには、2つだけのフォームフィールドが含まれ - ユーザー名と電子メールを:
ユーザー名と電子メールフォームフィールドの唯一の存在は、登録プロセスを作ることは非常に簡単です。ユーザー名と電子メールを入力した後まず、パスワードが送付されます。次は、使用サイトでは、あなたのプロフィールを記入し、より多くの記憶に残るパスワードを変更、パスワードを生成しました。
代わりに、まっすぐなように、パスワード、そのURL、プロフィール、ニックネームや名前などのユーザー名やメール、数以外の重要な情報を含む、対象への登録フォームを提供していない理由は、ユーザーが単にあなたのサイト上で上記のプロセスを経て登録させるの。
これはTuts +サイトなどの作家を行うために有用です。
この記事では、以下のフォームフィールドで、カスタムプラグインの登録フォームを作成します。
- ユーザー名
- パスワード
- Eメール
- サイト
- 名前
- 姓
- ニックネーム
- 簡単な紹介
このカスタム登録フォームはWordPressのウェブサイトのテンプレートタグやショートコードに統合することができます。この単純なコードを使用すると、ページを作成することができ、その後、あなたのサイトの公式登録ページとして設定します。それとも、また、ユーザーがあなたのサイトを登録することができます記事を読んだ後の記事では、この単純なコードを使用することができます。あなたはサイドバーまたはどこか他のサイトへの登録フォームを追加したい場合は、テーマファイルを編集し、目的の場所にテンプレートタグを追加することができます。
私たちは、登録フォームプラグインで構築するために始めた、それは、ユーザー名、パスワード、および電子メールフィールドが必要である、ということは注目に値します。私たちは、このルールに従って検証に書き込みます。
プラグを構築
前述したように、私たちはコードのプラグを始めましょう。まず、プラグヘッドを含みます。
<?phpの / * プラグイン名:カスタム登録 プラグインURI:http://code.tutsplus.com 説明:ポストの数に基づいて更新ユーザーの評価。 バージョン:1.0 著者:Agbonghamaコリンズ 著者URI:http://tech4sky.com * /
次に、我々は、PHPの関数HTMLコードは、登録フォームが含まれて作成します。
関数registration_form($ユーザ名、$パスワード、$メール、$のウェブサイト、$ FIRST_NAME、LAST_NAME $、$ニックネーム、$バイオ){ エコー" <スタイル> のdiv { マージン下:2ピクセル。 } 入力{ マージン底:4PX。 } </スタイル> 「; エコー' <フォームアクション= "'。$ _SERVER [ 'REQUEST_URI']。" "メソッド= "ポスト"> の<div> <= "ユーザー名"のラベル>ユーザー名の<strong> * </ strong>の</ label>は <入力タイプ= "テキスト"名前= "ユーザ名"値= " '(ISSET($ _POST [ 'ユーザー名']?)$ユーザ名:ヌル)。'"> < <input type = "パスワード"名前= "パスワード"値= " '([パスワード'])$のパスワード?:ヌル。ISSET($ _POST)'。' "> </ div> <div>の =のための<ラベル"メール">メールの<strong> * </ strong>の</ label>は の<input type =" text "nameは= "電子メール"の値="」。(ISSET($ _POST [ 'メール'])$メール:?ヌル) ' "> </ div> <div>の <ラベル=のための"ウェブサイト">ウェブサイト</ label>は の<input type =" text "NAME = "ウェブサイト"値="'。(ISSET($ _POST [ 'ウェブサイト' ?])$のウェブサイト:null)「の">。 </ div> <div>の <= "FIRSTNAME">姓</ label>はラベル の<input type = "text" nameは= "fnameの"値= " '(ISSET($ _POST [ 'fnameは']?)$ FIRST_NAME:ヌル)。'" > </ div> <div>の 姓</ label>は< "ウェブサイト" =のラベル> の<input type = "text"の名= "LNAME"値= " '([LNAME '] ISSET($ _POST。')$のLAST_NAME:?ヌル)'。 "> </ div> <div>の <ラベル=のための"ニックネーム">ニックネーム</ label>は の<input type =" text "NAME = "ニックネーム"値="」。(ISSET($ _POST [ 'ニックネーム']) ?$ニックネーム:null) 'の"> </ div> <div>の <ラベル=のための"バイオ"> /バイオ</ラベル>について <TEXTAREA名="バイオ">'。(?ISSET($ _POST [ 'バイオ'])$バイオ:ヌル)。「</ TEXTAREA> </ div> < 入力タイプは、=名前= "送信" "送信"値= "登録" /> </フォーム> 「; }
これは、登録フィールドが変数として上記の関数に渡されます注意しましたか!機能コードでは、例えば、次のコード例が表示されます:
(ISSET($ _POST [ 'LNAME'])$ LAST_NAME:?ヌル)
三項演算子が含まれている場合、$ _POSTグローバル配列は、の値が含まれている内容を確認し、ユーザが再入力フィールドに時間を節約することができるように、フォームフィールドの値を与えるでしょう。
あなたが内容や消毒のユーザー入力を検証するまで、登録フォームはまだ完了していません。したがって、我々はregistration_validationという名前の検証関数を作成します。
負担を軽減するために、我々は直接書き込ま検証を以下、ワードプレスWP_Errorクラスを使用します。
1.関数のパラメータとしての機能、登録フィールドを作成します。
関数registration_validation($ユーザ名、$パスワード、$メール、$のウェブサイト、$ FIRST_NAME、LAST_NAME $、$ニックネーム、$バイオ){
WP_Errorクラスの2例は、それがスコープ関数の外にアクセスできることを保証するために、グローバル変数のインスタンスを設定します。
グローバルの$ reg_errors。 $ reg_errors =新しいWP_Error。
3.覚えている:私達はちょうど、ユーザー名、パスワード、および電子メールが必要とされており、空のままにすることはできないと述べました。このルールを実装するために、我々は、これらのフィールドが空であるかどうかを確認する必要があります。もしそうであれば、我々はグローバルWP_Errorクラスにエラーメッセージを追加します。
もし(空($ユーザ名)||空($パスワード)||空($ Eメール)){ $ reg_errors->( 'フィールド'、 '必要なフォームフィールドが欠落している')を追加します。 }
4.我々はまた、少なくとも4桁のユーザー名を確認し、確認します
1 2 3 |
もし(4> strlenを($のユーザー名)){ $ reg_errors->追加( 'username_lengthを' 'ユーザー名が短すぎ、少なくとも4つの文字が必要です。'); } |
ユーザー名が登録されているかどうかを確認5.
1 2 |
もし(username_exists($のユーザー名)) $ reg_errors->追加( 'USER_NAMEを'、 '申し訳ありませんが、そのユーザー名はすでに存在します!'); |
6.ワードプレスを使用し validate_usernameの ユーザー名が有効であることを確認する機能を
1 2 3 |
(もし!validate_username($のユーザー名)){ $ reg_errors->( 'username_invalid'、 '申し訳ありませんが、あなたが入力したユーザー名が有効ではありません')を追加。 } |
7.ユーザーがパスワードの桁数を5文字未満に入っていることを確認してください
1 2 3 |
もし(5>のstrlen($パスワード)){ $ reg_errors->( 'パスワード'、 'パスワードの長さが5より大きくなければなりません')を追加します。 } |
8.メールボックスが有効で確認
1 2 3 |
(!is_email($ Eメール))であれば、{ $ reg_errors->( 'メールが有効ではありません'、 'email_invalid')を追加。 } |
9.登録されたメールボックスをチェックしてください
1 2 3 |
もし(email_exists($メール)){ $ reg_errors->( 'メール'、 'メールすでに使用中')を追加します。 } |
10. URLフィールドがすでに満たされている場合、有効かどうかを確認
1 2 3 4 5 |
(もし!空($ウェブサイト)){ 場合(!にfilter_var($ウェブサイト、FILTER_VALIDATE_URL)){ $ reg_errors->追加( 'ウェブサイト'、 'ウェブサイトは有効なURLではありません'); } } |
11.最後に、ループエラーメッセージWP_Errorインスタンス、および各ディスプレイ
1 2 3 4 5 6 7 8 9 10 11 12 |
もし(is_wp_error($ reg_errors)){ foreachの($ reg_errors-> $エラーとしてget_error_messages()){ エコー'の<div>'; エコー'<強い> ERROR </ strong>を:'; $エラーをエコー。'<BR/>'; エコー'</ div>'; } } |
ここでは、検証機能を完了しました。
次に、作成 complete_registration() ユーザ登録を処理するための機能を。
ユーザ登録は、実際にユーザデータ配列を受け入れることができwp_insert_user機能によって行われます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
関数complete_registration(){ グローバルの$ reg_errors、$ユーザ名、$パスワード、$メール、$のウェブサイト、$ FIRST_NAME、LAST_NAME $、$ニックネーム、$バイオ。 もし(1>数($ reg_errors-> get_error_messages())){ $のユーザデータ=配列( 'USER_LOGIN' => $ユーザ名、 'USER_EMAIL' => $の電子メール、 'user_pass' => $のパスワード、 'user_url' => $ウェブサイト、 'FIRST_NAME' => $ first_nameの、 'LAST_NAME' => $ last_nameの、 'ニックネーム' => $ニックネーム、 '説明' => $バイオ、 ); $ユーザ= wp_insert_user($のユーザデータ); エコー「登録が完了しました。後藤< } } |
上記で complete_registration() 関数で、我々は、フォームフィールドをreg_errors WP_Error例を$、そして私たちはグローバルスコープにアクセスできるように、グローバル変数を設定します。
その後、我々は例を扱う$ reg_errorsエラーはエラーが含まれて確認してください。エラーがない場合、我々は$のユーザデータの配列を記入し、ユーザ登録情報WordPressのデータベースを作成し、完全な登録情報と登録ページアドレスへのリンクが表示されます。
戻る階に、custom_registration_function() 関数は、使用に入れの上に私たちが作成した関数です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
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 ); } |
让我解释一下 custom_registration_function() 函数的代码。
首先,我们通过检查 $_POST['submit'] 是否设置来判断表单是否已提交。如果已提交,就调用 registration_validation 函数验证用户提交的数据。然后我们消毒表单数据,并为消毒好的数据设置变量名。最后调用 complete_registration 注册用户。
我们需要调用 registration_form 函数显示注册表单。
记得我提到过要为该插件提供简码支持,下面就是构建简码的代码。
1 2 3 4 5 6 7 8 9 |
// 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(); } |
到这里,我们就完成了整个插件的代码啦!下面就是最终的效果,当然了,还需要你自己添加 css 样式才能达到下面的显示效果。
插件用法
要在 WordPress 文章或页面中显示这个注册表单,可以使用下面的简码
1 |
[cr_custom_registration] |
要在你主题的特定位置显示注册表单,你可以添加下面的模板标签进行调用
1 |
<?php custom_registration_function(); ?> |
你可以在这里下载本文制作好的插件:Custom Registration Form Plugin