ユーザープロフィールの項目追加について

やること

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最強!

目次へ戻る
この記事をシェアする:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

東日本橋の制作・開発会社 プレスマンのスタッフブログ