フロントエンドユーザー管理プラグインを使用すると、ログイン機能があり、ページの閲覧制限もできる会員制サイトが簡単に作成できますが、マイページも割と簡単にカスタマイズすることが可能です。
マイページと一括りにしても、非公開型のマイページと公開型のマイページがあります。その名の通り、非公開型のマイページはログインしているユーザーのみが閲覧できるページで、ユーザーそれぞれの情報が表示されます。一方、公開型のマイページは誰でも閲覧できるページで、該当するユーザーの情報を表示します。非公開型のマイページと公開型のマイページでは、設定方法が少し異なってきます。
非公開型のマイページは、フロントエンドユーザー管理プラグインが利用しているログインページがそのままマイページとして利用できます。
公開型のマイページの場合は、WordPress のテーマファイルの一つである author.php を利用するのがよいと思います。
以下では、WordPress とフロントエンドユーザー管理プラグインで非公開型・公開型のマイページを作成する方法を具体的に見ていきたいと思います。
非公開型マイページの設定
フロントエンドユーザー管理プラグインのデフォルトの設定で、自動生成される固定ページのログインページの投稿欄に入力した内容はログインしたユーザーにのみ表示されるようになっています。
ログインしたユーザー向けにメッセージを表示したり、ログインユーザー向けのリンクメニューを表示するだけであれば、投稿欄への入力でも十分かもしれません。
ただ、もう少し複雑な内容をマイページに表示する場合は、固定ページのログインページに対して、ページテンプレートを作成し、適用させます。ページテンプレートについて詳しくは、WordPress Codex 日本語版をご覧ください。
マイページのページテンプレートを作成する
使用しているテーマにもよりますが、基本的にはテーマの page.php をコピーして、mypage.php などのファイル名で保存し、ファイルの初めにページテンプレートの情報を入力します。
<?php /* Template Name: マイページ */ ?>
作成した、mypage.php をテーマファイルにアップロードすると、固定ページの編集画面のページ属性にあるテンプレートに、先ほど追加した「マイページ」が選択できるので、選択して更新ボタンを押します。
これで、ページテンプレートの準備はできました。後は、マイページのカスタマイズをしていくだけです。
ログイン判定のコード
マイページのページテンプレートが作成できたので、マイページとして機能するようにカスタマイズしていきましょう。
まず基本となる、ログイン判定のコードを作成して、ログインしているユーザー向けとログインしていないユーザー向けで異なる出力ができるように準備をしましょう。
mypage.php の中から、the_content(); の部分を探し出し、以下のようにログイン判定の条件分岐に置き換えましょう。
<?php if ( is_user_logged_in() ) { // ログインしているユーザー向け // ここにマイページの内容を設定していきます。 the_content(); } else { // ログインしていないユーザー向け the_content(); } ?>
上記の段階では、ログインしているユーザーもログインしていないユーザーも同一の内容となっていますが、フロントエンドユーザー管理プラグインが、the_content() の部分をそれぞれに応じて出力するようになっています。
マイページにユーザー情報を表示する
フロントエンドユーザー管理プラグインを使用すると、デフォルトでアカウント設定が利用できるので、ユーザーは自身の情報を変更でるわけですが、マイページのトップにユーザー情報を単に表示したい、というケースがあると思います。
例1.氏名を入れたあいさつ文を表示する
<?php global $current_user; echo 'ようこそ、'.$current_user->last_name.$current_user->first_name.' さん'; ?>
$current_user という変数は非常に便利な変数で、ログインしているユーザーの情報を格納しています。上記の例では、氏名(last_name、first_name)を表示していますが、ユーザー名であれば、user_login ですし、ニックネームであれば、nickname となり、ブログ上の表示名であれば、display_name となります。
例2.所有ポイントを表示する
<?php global $current_user; echo '現在お持ちのポイントは、'.$current_user->point.' ポイントです。'; ?>
例3.アバター画像を出力する
ユーザー属性の追加で、フィールド名に「avatar」を使用し、フィールドタイプを file に指定すると、アバター画像を登録することができますが、そのアバター画像を出力するコードが以下のような感じです。
<?php global $current_user; echo get_avatar($current_user->ID, 96); ?>
上記で使用している、get_avatar() 関数について詳しくは、関数リファレンス/get avatar – WordPress Codex 日本語版をご覧ください。
例4.file タイプの画像を出力する
画像を出力する方法は色々あると思いますが、file タイプでアップロードされるファイルはメディアに登録され、ユーザー情報としてはメディアのIDが保存されています。そのため、以下のような関数で簡単に出力(フィールド名がfileの場合)することができます。詳しくは、テンプレートタグ/wp get attachment image – WordPress Codex 日本語版をご覧ください。
<?php echo wp_get_attachment_image( $current_user->file ); ?>
[/php
おまけ:ページテンプレートを使用せずに投稿欄だけでカスタマイズする方法
ページテンプレートを作成してファイルを編集するのが面倒な場合、プラグインを使用する、という方法もあります。
当サイトで販売中のカスタムPHPウィジェットマネージャープラグインを利用すると、投稿欄に任意に作成したショートコードを埋め込めるようになりますが、カスタムPHPウィジェットマネージャープラグインは設定のコンテンツ欄に、PHPを直接入力することができるので、上記のようなページテンプレートで設定した内容を、ファイルを何ら編集することなく、WordPress の編集画面のみで完結させる事が出来ます。
カスタムPHPウィジェットマネージャープラグインは、プログラマブルなウィジェットやショートコードを、WordPress 内で簡単に作成できるのでおすすめです。
公開型マイページの設定
非公開型のマイページでは主にページテンプレート上でカスタマイズしますが、公開型のマイページでは、テーマファイルの中の author.php を使用します。
WordPress ではデフォルトで、投稿者の記事一覧を出力するテンプレートが用意されており、そのテンプレートが author.php となります。利用しているテーマに、author.php が存在しない場合は、archive.php や index.php が代わりに使用されるようになっています。
以下のようなURLで、author.php が自動的に使用され、公開型マイページとなります。
http://domain/author/[ユーザー名]
今回想定している公開型マイページのユーザーは、投稿機能を使用しない権限(購読者)で、当然記事を書いていないので、デフォルトの author.php だと、「記事がありません。」と表示されるかもしれません。
そこで、author.php の記事出力部分をごっそり削除すればよいと思います。
<?php // ここから if ( have_posts() ) : /* 記事出力コード */ endif; // ここまで削除 ?>
以上で、準備は完了で、後はマイページに出力したい内容を上記の削除した部分の代わりに入力していくこととなります。
マイページにユーザー情報を表示する
非公開型のマイページにユーザー情報を表示する場合には、$current_user という変数を使用しましたが、author.php で該当するユーザーの情報を表示する場合には、get_userdata() という関数を使用します。get_userdata() についても詳しくは、関数リファレンス/get userdata – WordPress Codex 日本語版をご覧ください。
author.php でユーザー情報を取得するには以下のようにします。get_userdata() の第1引数にはユーザーIDを渡しますが、author.php では $author という変数に該当のユーザーIDがセットされています。
<?php $user_data = get_userdata($author); ?>
例1.ユーザーの基本情報を表示する
ユーザーのニックネームやユーザーのプロフィール情報を表示します。
<?php echo '<p>ここは、'.$user_data->nickname.' のマイページです。</p>'; echo '<p>'.$user_data->description.'</p>'; ?>
例2.アバター画像を出力する
公開型のマイページでもよくアバター画像は表示してあると思います。
<?php echo get_avatar($author, 96); ?>
非公開型のマイページと公開型のマイページでは、使用する変数や関数が若干異なるだけで、基本的な考え方は同じです。
マイページをもっとカスタマイズする
今回の記事では、非公開型のマイページと公開型のマイページの基本的な作成方法を解説し、簡単なユーザー情報を出力するコードの例をご紹介いたしました。
ここから先は、マイページをどのように使用していくかを、サイトの内容に合わせてカスタマイズしていくことになります。
例えば、ユーザーにおすすめの記事や商品を表示したり、ユーザーが登録したお気に入りのページやリンクを表示したり、ネットショップ管理プラグインで購入したダウンロードファイルを表示したり、などです。
PHPコードでの設定となるので、カスタマイズが難しい場合は、弊社にお任せいただくことも可能です。マイページは、ウェブサービスの基幹部分となってくるので、ご希望の機能が実現可能かなども含めて、お気軽にお問い合わせいただければ、と思います。