出典: http://www.ido321.com/1031.html
原文: カスタムWordPress登録フォームプラグインの作成
翻訳: カスタム WordPress プラグインのサインアップ フォームを作成します
翻訳者: dwqs
早速本題に入りますが、WordPress では、新規ユーザー用、または既存の WordPress サイトに新規ユーザーを追加する場合に、カスタム登録フォームを提供しています。しかし、WordPress ダッシュボードを表示するオプションなしでカスタム登録フォームを実装したい場合はどうすればよいでしょうか?
この記事では、タグ テンプレートとショートコード テンプレートを組み合わせて、WordPress でカスタム登録フォームを作成する方法を学びます。
WordPress のデフォルトの登録フォームは、ユーザー名とメールアドレスの 2 つのフィールドのみで構成されています。
このユーザー名とメールフォームフィールドだけで登録が非常に簡単になります。まず、ユーザー名を入力し、次にパスワードを受け取るために使用される電子メール アドレスを入力します。次に、メールで受け取ったパスワードを使用してサイトにログインし、プロフィールを完成させ、パスワードをシンプルで覚えやすいものに変更します。
ユーザー領域にこうしたプレッシャーを課すのではなく、サイトに登録するだけでよいので、ユーザー名やメールアドレスに加えて、パスワード、個人 URL、個人プロフィールなどの追加の重要なフィールドを含む直接フォーム フィールドを提供してみてはいかがでしょうか, ユーザーが使用する登録フォームにニックネームとその名前はありますか?
これは、Tuts+ のようなマルチユーザー Web サイトで非常に便利です。
この記事では、次のフォームフィールドを使用してカスタムフォーム登録プラグインを構築します:
このカスタム フォーム プラグインは、ショートコードと連絡先テンプレートを使用して WordPress に統合できます。
ショートコード テンプレートを使用して、サイトに正式な登録ページを作成できます。公開された記事でショートコード テンプレートを使用して、ユーザーが記事を読んだ後に登録できるようにすることもできます。
Web サイトのサイドバーの特定の場所に登録フォームを追加する場合は、ラベル テンプレートで必要な登録フォームのみを作成する WordPress テーマ内の場所を編集できます。
作成する前に、ユーザー名、パスワード、メールアドレスのフィールドが必須であることに注意してください。
検証関数を作成するときは、これらのルールを強制します。
プラグインを構築する
那的、先ほども言ったように、プラグインのエンコードを開始しました。まず、プラグインのヘッダーをインクルードします:リーリー
次に、登録フォームを使用して HTML コードを含む PHP 関数を作成します。 リーリー
登録フィールドは変数として上記の関数に渡されることに注意してください。関数内には次のコードの例が表示されます:
リーリー
この三項演算子は、グローバル変数配列 $_POST にデータが含まれているかどうかを確認し、データがある場合は、入力されたフォーム フィールドの値を次のフィールドに入力するために保存します。
フォームデータを検証してフォームデータをクリアしない限り、登録フォームは完了したとは見なされません。それ以外の場合はカウントされません。したがって、registration_validation
<span> 検証の「面倒な」作業を簡略化するために、WordPress の <code>registration_validation<span>的表单验证函数。</span>
WP_Error クラスを使用できます。私に従って検証関数を作成してください:
<span>为了简化验证的”痛苦”,我们可以使用WordPress中的 <span>WP_Error</span> 类。跟着我编写验证函数:</span>
1. 関数を作成し、登録フォームのフィールド値を関数のパラメータとして渡します
リーリー
<span>1、创建函数,并将注册表单的字段值作为函数的参数传递进来</span>
2. WP_Error クラスをインスタンス化し、そのインスタンスをグローバル変数として使用して、関数のスコープ外で使用できるようにします。
リーリー
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>
<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>
<code><span><strong> </strong>在这篇文章中,我们一步步创建了一个自定义注册表单并添加到WordPress站点。你可以添加额外字段,进一</span>
この記事では、カスタム登録フォームを段階的に作成し、WordPress サイトに追加します。さらにフィールドを追加できます
<span>步扩展这个注册表单,例如用户角色,AOL IM 账户,但是确保数据时有效的。</span>
ユーザー ロール、AOL IM アカウントなど、この登録フォームを段階的に展開しますが、データが有効であることを確認してください。
<span> 如果你有任何问题或建议你,可以留下评论。</span>
<span>下一篇:</span>
如何在网站中添加音乐 <span><br></span>
<p>次の記事: <span></span></p>
category-6.php ページでは、wp_head と wp_footer が導入されていますか? プラグインに必要なリソース ファイルには、これら 2 つのファイルをロードする必要がありますか?