web-dev-qa-db-ja.com

ユーザーデータにカスタムオプションを追加する方法

アバターを自分のユーザーに追加したいです。私は働いているサイトには限られたグループしかいません。アップロードは実際には問題ではありません。画像をサーバーに配置し、URLを使用してアバターを設定することができます(実際に投稿できるのは約5人だけです)。それは、後で取得することができる画像URLを記入することができるユーザーページにフィールドを追加する方法を述べたものです。私はあなたがthe_author_meta();関数を通してユーザーデータを取得できることを知っています、しかしどのように私は彼らが記入されそしてユーザーと関連しているデータベースに置かれることができるカスタムユーザーフィールドを追加しますか?

あるいは、たとえばaimフィールドのような既存のものを使用するほうが良い場合があります。

3
Jem

プロファイル/ユーザー編集ページにフィールドを追加するには、edit_user_profileフックとshow_user_profileフックを使う必要があります。

add_action( 'show_user_profile', 'my_extra_user_fields' );
add_action( 'edit_user_profile', 'my_extra_user_fields' );
function my_extra_user_fields( $user ) 
{ ?>
    <h3>User avatar</h3>

    <table class="form-table">
        <tr>
            <th><label for="user_avatar">User avatar</label></th>
            <td>
                <input id="user_avatar" name="user_avatar" type="text" value="
                    <?php $user_avatar = get_the_author_meta( 'user_avatar', $user->ID ); 
                        echo $user_avatar ? $user_avatar : '';?>" />
                <span class="description"><?php _e("Please enter Avatar URL."); ?></span>
            </td>
        </tr>
    </table>
<?php }

そのフィールドを保存するには、personal_options_updateフックとedit_user_profile_updateフックを使う必要があります。

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

function save_my_extra_user_fields( $user_id ) 
{
    if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }else{

        if(isset($_POST['user_avatar']) && $_POST['user_avatar'] != ""){
            update_usermeta( $user_id, 'user_avatar', $_POST['user_avatar'] );
        }
    }
}

そしてあなたがすでに知っているように、あなたはthe_author_meta()またはget_user_meta()を使ってそのデータを見抜くことができます

1
Bainternet