ユーザープロフィールの項目追加について
やること
WordPressのユーザープロフィールに、新しい項目を追加することができます。
追加する方法は、これから紹介する3つのやり方があります。
では、作っていきます。
①フィルターフックの「user_contactmethods」で追加する方法
テキストボックスの項目を追加したい場合は、この方法が簡単です。
ユーザー編集
コード例
add_filter( 'user_contactmethods', 'user_contactmethods_custom' );
// 項目の登録
function user_contactmethods_custom( $profile_items ) {
$profile_items['phone'] = '電話番号';
$profile_items['address'] = '住所';
return $profile_items;
}
ユーザー新規追加
フィルターフックの「user_contactmethods」では、ユーザー新規追加時に表示されません。
新規追加でも表示したい場合は、アクションアックの「user_new_form」を利用します。
コード例
add_action( 'user_new_form', 'user_new_profile_custom' );
// ユーザー新規作成に項目を追加する。
function user_new_profile_custom() {
$phone = $_POST['phone'];
$address = $_POST['address'];
?>
<table class='form-table'>
<tr class='form-field'>
<th><label for='phone'>電話番号</label></th>
<td><input type='text' name='phone' value='<?php echo esc_attr( $phone ) ?>'/></td>
</tr>
</table>;
<table class='form-table'>
<tr class='form-field'>
<th><label for='address'>住所</label></th>
<td><input type='text' name='address' value='<?php echo esc_attr( $address ) ?>'/></td>
</tr>
</table>;
<?php
}
表示例
②アクションフックの「show_password_fields」を利用する方法
テキストボックスを追加するだけだったら、上記のやり方で簡単に実装できますが、
テキストボックス以外の項目追加の場合は、少し手間がかかります。
今回は、テキストエリアを例に紹介します。
◯必要手順
- アクションフックの「show_password_fields」でユーザー編集に項目を追加する。
- アクションアックの「user_new_form」でユーザー新規作成に項目を追加する。
- アクションフックの「profile_update」でデータの更新処理を追加する。
- フィルターフックの「user_contactmethods」で項目を登録する。
※項目の登録をしないと、データ更新が反映されません。
コード例
add_filter( 'user_contactmethods', 'user_contactmethods_custom' );
add_action( 'user_new_form', 'user_new_profile_custom' );
add_action( 'show_password_fields', 'user_profile_custom' );
add_action( 'profile_update', 'update_user_profile', 10, 2 );
// ユーザー編集に項目を追加する。
function user_profile_custom( $bool ) {
global $profileuser;
?>
<tr>
<th><label for='memo'>メモ</label></th>
<td><textarea name='memo' rows='5' cols='30'><?php echo esc_html( $profileuser->memo ) ?></textarea></td>
</tr>
<?php
return $bool;
}
// ユーザー新規作成に項目を追加する。
function user_new_profile_custom() {
$memo = $_POST['memo'];
?>
<table class='form-table'>
<tr class='form-field'>
<th><label for='memo'>メモ</label></th>
<td><textarea name='memo' rows='5' cols='30'><?php echo esc_html( $memo ) ?></textarea></td>
</tr>
</table>
<?php
}
// データの更新処理をする。
function update_user_profile( $user_id, $old_user_data ) {
if ( isset( $_POST['memo'] ) ) {
update_user_meta( $user_id, 'memo', $_POST['memo'], $old_user_data->memo );
}
}
// 項目の登録をする。
function user_contactmethods_custom( $profile_items ) {
$profile_items['memo'] = 'メモ';
return $profile_items;
}
表示例
③ACFを利用する方法
◯必要手順
1.ACFフィールドグループを新規作成して、追加する項目のフィールドを作成します。
2.フィールドグループを表示する条件に「ユーザーフォーム」を選択します。
3.公開ボタンを押して、ユーザープロフィール画面を見てみます。
項目が追加されていることが確認できました。
まとめ
ACFが導入されている環境下であれば、③のACFを利用する方法が一番よいですね。
なんと行っても、ラジオボタンやセレクトボックスといった、種類豊富のフィールドを簡単に追加できてしまいます。
ACF最強!