SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 社員募集 ...

【WordPress】ユーザーのプロフィールの項目をカスタマイズする

問題

例えば、会社のホームページの社員紹介ページのようなものを作る場合、

社員の情報をWordPressのユーザーとして管理しようとすると、どうしても項目が足りない。

社員番号や、性別や、twitterアカウント、facebookのURLなど、いろいろ入れたいんだけど、難しい?

wordpress

答え

案外簡単。functions.php などに、以下のフックを追加する。

/**
 * ユーザープロフィールの項目のカスタマイズ
 */
function my_user_meta($x)
{
	//項目の削除
	unset($x['aim']);
	unset($x['jabber']);
	unset($x['yim']);

	//項目の追加
	$x['twitter'] = 'twitter';
	$x['facebook'] = 'facebook';
	$x['phone'] = '電話';
	$x['address'] = '住所';

	return $x;
}
add_filter('user_contactmethods', 'my_user_meta', 10, 1);

JabberやらAIMなんて使わないという場合は、削除できるし、twitter、facebookのURLや住所、役職、電話番号、血液型などなど、何でも項目が追加できる。

ちなみに、どんな風にデータベースにユーザーのプロフィールが格納されるのかというと、wp_usermeta のテーブルに以下のように保存されている。項目はわりと気軽に追加、変更できそうな感じですね。

mysql> select * from wp_usermeta;
+----------+---------+---------------------------------------+---------------------------------------------------------+
| umeta_id | user_id | meta_key                              | meta_value                                              |
+----------+---------+---------------------------------------+---------------------------------------------------------+
|        1 |       1 | first_name                            |                                                         |
|        2 |       1 | last_name                             |                                                         |
|        3 |       1 | nickname                              | admin                                                   |
|        4 |       1 | description                           |                                                         |
|        5 |       1 | rich_editing                          | true                                                    |
|        6 |       1 | comment_shortcuts                     | false                                                   |
|        7 |       1 | admin_color                           | fresh                                                   |
|        8 |       1 | use_ssl                               | 0                                                       |
|        9 |       1 | show_admin_bar_front                  | true                                                    |
|       10 |       1 | wp_capabilities                       | a:1:{s:13:"administrator";s:1:"1";}                     |
|       11 |       1 | wp_user_level                         | 10                                                      |
|       12 |       1 | dismissed_wp_pointers                 | wp330_toolbar,wp330_media_uploader,wp330_saving_widgets |
|       13 |       1 | show_welcome_panel                    | 0                                                       |
|       14 |       1 | wp_dashboard_quick_press_last_post_id | 3                                                       |
|       15 |       1 | wp_user-settings                      | editor=html&imgsize=full                                |
|       16 |       1 | wp_user-settings-time                 | 1327161604                                              |
|       17 |       1 | twitter                               |                                                         |
|       18 |       1 | facebook                              |                                                         |
|       19 |       1 | phone                                 | 電話入力テスト                                   |
|       20 |       1 | address                               | 住所入力テスト                                   |
+----------+---------+---------------------------------------+---------------------------------------------------------+
20 rows in set (0.00 sec)

関連するメモ

コメント