web-dev-qa-db-ja.com

登録とプロフィールのカスタムフィールド

WordPress登録フォームにカスタムフィールドを追加してバックエンドのユーザープロファイルに表示する方法

私はすでにそれをグーグルだが、登録プロセスではなくユーザープロファイルにそれを追加する方法を見つけるだけである。

1
Plaz

私はこのプロセス全体を自分で経験しました。これを簡単にするためのフックなどはありません。その代わりに、それを機能させるためには「ハッキング」する必要があります。それはきれいではありませんが、それは仕事をやり遂げます。私は3つのカスタムフィールドで数ヶ月間それを使っています、そしてそれは最初から私のカスタムユーザー情報を追加することは大きな時間節約でした。

これにより、カスタムダッシュボードが管理ダッシュボードの "Add New User"ページに追加されます。それがあなたがやろうとしていることであれば、これを公開登録ページに変換することはそれほど難しくないはずです。

このコードをすべてあなたのテーマのfunction.phpに追加してください。

手順1:[ユーザーの追加]ページにフィールドを追加します。

// Add custom field for wp-admin add user page. 
// There is no filter or hook, and this is a hack, but it works. 
function wpse_135622_add_new_user_custom_field_hack(){
    global $pagenow;
    # do this only in page user-new.php
    if($pagenow !== 'user-new.php')
        return;
    # do this only if you can
    if(!current_user_can('manage_options'))
        return false;
    ?>
    <table id="table_custom_field_1" style="display:none;">
    <!-- My Custom Code { -->
        <tr>
            <th><label for="custom_field_1">Custom Field Label</label></th>
            <td><input type="text" name="custom_field_1" id="custom_field_1" /></td>
        </tr>
    <!-- } -->
    </table>
    <script>
    jQuery(function($){
        //Move my HTML code below user's role
        $('#table_custom_field_1 tr').insertBefore($('#role').parentsUntil('tr').parent());
    });
    </script>
    <?php
}
add_action('admin_footer_text', 'wpse_135622_add_new_user_custom_field_hack');

もちろん、あなたが見るすべてのcustom_field_1の名前をあなたにとって意味のあるものに変更してください。 pets_nameなどです。

ステップ2:フィールドが登録フォームに表示されたので、[Add New User]をクリックしたときにデータベースに保存する必要があります。

// Save custom field
function wpse_135622_save_custom_add_new_user_field_hack($user_id){
    # do this only if you can
    if(!current_user_can('manage_options'))
        return false;

    # save my custom field
    update_usermeta($user_id, 'user_custom_field_1', $_POST['custom_field_1']);
}
add_action('user_register', 'wpse_135622_save_custom_add_new_user_field_hack');

繰り返しますが、すべてのcustom_field_1の名前を変更して、上で行ったことと一致させてください。

保存されたので、これが[管理ダッシュボード]> [ユーザー]で表示する方法です。

// Add custom fields to user profile page.
function wpse135622_show_custom_user_fields($profile_fields) {
    $profile_fields['user_custom_field_1'] = 'Custom Field 1';
    return $profile_fields;
}
add_filter('user_contactmethods', 'wpse135622_show_custom_user_fields');

繰り返しになりますが、custom_field_1を使用している名前と一致させます。Custom Field 1はユーザー管理ページに表示するラベルです。

それをまとめるとあなたが始めましょう。現在データベースに入っているので、ユーザーがログインしている場合はフロントページに表示するなど、必要なことは何でもできます。

これであなたの質問に答えた場合は、チェックマークをクリックしてそれが完了したことをマークしてください。

2
Pat

「ワードプレス登録フォーム」でwp-login.php?action=registerのフォームを意味する場合、 フックがあります を使用して、「電子メール」行の下にフィールドを追加できます。例えば...

add_action(
  'register_form',
  function() {
    echo 'Here is where the hook fires';
  }
);

データを保存するには、user_registerにフックします このCodexの例のように

add_action( 'user_register', 'myplugin_registration_save', 10, 1 );

function myplugin_registration_save( $user_id ) {

    if ( isset( $_POST['first_name'] ) )
        update_user_meta($user_id, 'first_name', $_POST['first_name']);

}

質問の詳細はほとんどないため、より具体的に説明することは困難です。

2
s_ha_dum