WordPressサイトの運営で、ログインしたユーザーのみ表示するページを用意したいことがあります。ユーザー登録は、それを実現する第一歩となります。
ところでMTS Simple Bookingでは、住所や電話番号など最小限の個人情報をユーザーデータとして項目追加していますが、顧客管理機能は何もありません。そのため、特別な顧客にWeb上でサービスを提供する場合は、WordPressのユーザー管理機能を活用することになります。
本稿は、ユーザーの新規登録についてVer.1.33.0で改善しましたので、改めてユーザーの登録に関して解説したものですが、Ver.1.34以降も機能の改善が進められていますので、本項末に順次説明を追加して参ります。
WordPressのユーザー管理
WordPressサイトのユーザーにはサイトの「管理者」、記事の「編集者、投稿者、寄稿者、購読者」のロールが付与され、管理画面で操作できる機能が段階的に制限されるようになっています。
サイトに記事をアップしたり、更新するユーザー以外は、通常「購読者」として登録します。顧客管理で利用するならユーザー登録は「購読者」で登録し、操作はユーザー情報の更新のみとするのがよいでしょう。
またWordPressに、ログインユーザーだけが表示可能なページを用意する設定、はありません。そのようなページが必要な場合、自身で機能を用意するか、あるいは機能があるテーマやプラグインがあれば、それを利用することになります。
WordPress標準のユーザーの新規登録
ユーザー登録を希望する利用者を自動で登録できるようにするため、WordPressではログイン画面に「登録」ページへのリンクが設定されています。
この「登録」へのリンク表示は、管理画面の設定、一般タブページの中の「メンバーシップ」項目を「だれでもユーザー登録ができるようにする」にチェックする必要があります。
この設定によりログイン画面に「登録」リンクが表示され、クリックすると次のような新規登録画面が表示されます。
WordPressサイトのログインに関して
WordPressが標準で用意するログインは、URLで「wp-login.php」を指定したログイン画面からログインする、という方法です。
弊社ではこのログインに関して、ユーザー名とパスワード入力、及び、ログインボタンを表示する「ログインウィジェットプラグイン」をダウンロードいただけるように用意しております。
ご利用いただく場合の注意としまして、ご提供はGPLライセンスですので、ライセンスの範囲内でご利用ください。動作の保証は一切ございません。
プラグインのダウンロードページは、ログイン後表示いただけるユーザーページの下部にリンクがあります。
MTS Simple Bookingのユーザー登録
標準ではログイン画面のデザインが利用されているため、デザインされたフロントエンド画面とのギャップが大きく、違和感を感じます。また住所や電話番号など個人情報の入力項目は用意されていません。
そこで本システムではフロントエンド画面で新規登録できるように、入力フォームを含むユーザー登録機能を用意しました。
準備
ユーザー登録処理は、スラッグ名「mtssb-register」と名付けた固定ページを表示する処理ですべて行われます。このページを公開登録して表示すれば、プログラムにより入力・確認・登録・メール送信処理を実行することができます。
登録の条件
ユーザーのログイン名、メールアドレスの登録は、すべてWordPressの機能に依存しています。エラーは、WordPressのユーザー登録機能で判定された結果出力されます。
例えばWordPressのユーザー登録では、ユーザー名とメールアドレスの重複登録は許されていません。どちらか一方でも重複する場合はエラーとなり、登録されません。
また本機能では、ユーザー名に6文字未満、または32文字以上を指定するとエラーにしています。
登録の終了
確認画面で「登録する」ボタンを押すとユーザー登録が実行され、仮パスワードを記載したメールが送信されます。画面には次のメッセージが表示されます。
ユーザー登録を実行、仮パスワードをメール送信いたしました。
もし別途登録完了ページを表示したい場合、スラッグ名に「register-thanks」と名付けた固定ページを用意してください。終了後そのページへリダイレクトして表示します。
リダイレクトページへはGETパラメータとして「action=registerd」と「nonce=…」が渡されます。それ以外のパラメータはセットされていないため、改めて登録ユーザーの情報を表示することはできません。
ユーザー登録完了メール
登録完了のメール内容を変更したい場合、プラグインディレクトリにある「lib/MtssbUserForm.php」ファイルのメール文を含むメソッドの内容を直接編集してください。
この作業はPHPプログラムを編集するため、PHPプログラムについて理解していることが前提になります。プログラムの修正で不具合があると画面が白く表示されたり、エラーメッセージが出力される場合が発生します。
以前のバージョンの機能が削除されました
Ver.1.33より以前のユーザー登録において、入力項目を追加する機能が用意されていました。
この機能を利用するにはプログラムを編集することが前提でしたが、Ver.1.33においてそれらの機能はすべて削除されました。
Ver.1.34 フロントエンドのユーザー登録機能の改良
ユーザー登録フォームに「ユーザー利用規約」のチェック項目が用意されました。
上図「利用規約」フィールドは、「各種設定のその他」に必要な設定項目があります。
利用するユーザー項目の取捨選択
利用するユーザー項目の設定は、予約入力フォームの入力項目の設定を利用しています。設定は「各種設定の予約メール」にあります。
予約フォームの入力項目とユーザー登録の入力項目は、この設定が共通で参照されます。
ユーザー登録完了メールを管理者へ送信するには
本システムのフロントエンド機能を利用してユーザー登録が実行された場合、サイト管理者へは通知されません。
その通知を受け取る方法として、ユーザー登録完了メールの送信で「BCC」指定して管理者が受け取る方法を説明します。
この方法は本システムが用意するメッセージフィルター機能を利用し、メール送信するwp_mail()に渡すパラメータ「$headers」に情報を追加するものです。
wp_mail()のメール送信については、以下のページを参考にご覧ください。
► 予約メールのメッセージフィルター
メッセージフィルターはPHPプログラムを利用します。メッセージフィルターの説明は以下のページを参考にご覧ください。
► メッセージフィルター
メッセージフィルター「mtssb_register_mail_header」の利用
ユーザー登録完了メールの送信前に、wp_mail()に渡すパラメータ「$headers」に管理者へ同じメールを送信するためのBCC情報を追加します。
add_filter('mtssb_register_mail_header', 'register_mail_header', 10, 1);
function register_mail_header($header) {
$header[] = 'Bcc: admin@example.com <サイト管理者>';
return $header;
}
「admin@example.com」と「サイト管理者」は、送信先メールアドレスと宛名を適宜設定してください。
ご注意:上記サンプルプログラムは、本記事追加掲載(2021-4-23)時点において動作確認しておりません。