Code Serendipity

Keyword: Ruby, Python, javascript, RoR, heroku, AWS...

Code Serendipity

Keyword: Ruby, Python, wordpress, javascript, AWS...

wordpressに独自のユーザープロフィール項目を追加する<textarea形式/input形式>

https://s.w.org/images/backgrounds/wordpress-bg-medblue.png

wordpress のユーザープロフィールに新しい項目を追加したいとき、 それをテキストフィールドとしてインラインのフォームで表示する方法はたくさん載っているけれど、 テキストエリア形式にするにはどうしたらいいんだろうか、ということを調べましたのでまとめます。

日本語文献は見つからなかったので、誰かの参考になればいいなと。

ユーザープロフィールページに表示するコード

function.php に、以下のコードを貼ってください。

my_show_extra_profile_fields() の中のhtmlは、実現したい内容に合わせて、

  • name
  • id, class
  • value

などの属性値を変えてくださいね。

add_action( 'show_user_profile', 'my_show_extra_profile_fields' );
add_action( 'edit_user_profile', 'my_show_extra_profile_fields' );

function my_show_extra_profile_fields( $user ) { ?>

    <h3>以下、追加するフィールド</h3>

    <table class="form-table">

        <tr>
            <th><label for="biography">Biography</label></th>

            <td>
            <textarea name="biography" id="biography" class="regular-text" cols="30" rows="5">
           <?php echo esc_html(get_the_author_meta('biography', $user->ID) ); ?>
         </textarea>
                
            </td>
        </tr>

    </table>
<?php }

textarea ではなくテキストフィールドを実装したい場合は<textarea>...</textarea>の部分を変更して

<input type="text" name="twitter" id="twitter" value="<?php echo esc_attr( get_the_author_meta( 'twitter', $user->ID ) ); ?>" class="regular-text" />

のようにすればOKです。

ちなみに、

<?php echo esc_html(get_the_author_meta('biography', $user->ID) ); ?>

は、テキストエリアに保存した項目を表示するためのコードです。

追加した項目をデータベースに保存させるためのコード

function.php に以下のコードをペースとしてください。

項目を増やすなら、update_usermeta() を追加してゆきます。

add_action( 'personal_options_update', 'my_save_extra_profile_fields' );
add_action( 'edit_user_profile_update', 'my_save_extra_profile_fields' );

function my_save_extra_profile_fields( $user_id ) {

    if ( !current_user_can( 'edit_user', $user_id ) )
        return false;
    update_usermeta( $user_id, 'biography', $_POST['biography'] ); // ここを追加してゆきます
}

update_usermeta の二つ目の引数は、フィールドIDと同じになるようにしてください。

参考

Adding and using custom user profile fields