こんにちは。
今回は、ユーザー情報の項目追加や取得方法について色々学んだのでここに綴っていきます。
ユーザー情報の項目追加
user_contactmethodsというフィルターフックを使って、ユーザー情報の項目を追加する事ができます。
使用例
「電話番号」という項目を追加します。
functions.phpに以下を追記↓
(「my_function」は任意の関数名)
function my_function($profile_items) {
$profile_items['tel'] = '電話番号';
return $profile_items;
}
add_filter( 'user_contactmethods', 'my_function');
追加した項目は管理画面の「ユーザー」>「プロフィール」で確認できます。
ユーザー情報を取得する
get_user_meta()を使ってユーザー情報を取得します。
パラメータ
$user_id(整数・必須)
…ユーザーID。
$key(string型)
…wp_usermetaテーブルのキー。空文字列の場合は指定されたユーザーのすべてのメタデータを返します。
$single(boolean型)
…trueならメタデータの値を、falseなら配列を返します。初期値はfalseです。
戻り値
$singleがtrueならメタデータの値、$keyを省略するか$singleがfalseの場合は配列を返します。
指定されたメタデータが存在しない場合、$singleがtrueなら空文字列、$singleがfalseなら空の配列を返します。
使用例
ユーザーIDが「3」のユーザーの名を取得します。
$user_first_name = get_user_meta( 3, 'first_name', true);
user_contactmethodsを使って作った項目も同様に取得できます。
ユーザーIDが「3」のユーザーに対して先ほど追加した「電話番号」の項目を取得する場合はこのように書きます。
$user_tel = get_user_meta( 3, 'tel', true);
ACFで設定する
実は、プラグイン「Advanced Custom Fields」(以下、ACF)を使用すると簡単に追加や取得ができます。
かく言う私も、この記事を書くにあたって調べていた時に知りました。
ACFで項目追加
「ルール」に「ユーザーフォーム」を指定し、設定します。
設定した項目はもちろんユーザーのプロフィール画面で確認できます。テキストボックス以外も設定できます。
ACFで追加した項目を取得する
ACFで追加したユーザー情報の項目を取得する方法を書いていきます。
投稿や固定ページで使用する時に使うおなじみのget_field()を使うのですが、ユーザー情報の場合は少し独特です。
取得するユーザー情報のユーザーIDを指定する部分に「user_」を付けます。
以下の例では、ユーザーIDが「3」のユーザーのユーザー項目「address」を取得します。
$user_id = 3;
$user_address = get_field( 'address', 'user_'.$user_id);
まとめ
ユーザー情報は、企業のホームページや個人ブログサイトではあまり扱う事がないように思いますが、お気に入り機能を持つサイトや会員制サイト等では重要な機能の1つです。
普段は出番が少ないものの、ユーザー情報というのは個人情報など繊細に取り扱わなければならない物だと思いますので、これからも学んだ事はしっかり記録していこうと思います。
この記事を読んでいただきありがとうございました。
あなたのお役に立てれば幸いです。ではまた。