1

管理者が新しいユーザー(Wordpress)を追加するときに、フィールドを(入力として)追加する方法に興味があります。ユーザーが登録したときではなく、管理者が新しいユーザーを追加したときのみ。たとえば、ネットで見つけたのは、ユーザーを編集するフィールドのみですが、新しいユーザーの追加を追加したいです。入力からの新しいデータと、それらをユーザー メタ テーブルに保存します。このエクササイズをしている人はいますか?

4

3 に答える 3

8

この興味深い質問を再検討すると、いいえ、それは不可能だと思います.

ファイルを分析すると、それを可能にするアクション フック/wp-admin/user-new.phpはありません。どこにも導かれずに使用される機能をたどっても。<form>

考えられる汚い解決策は、フィールドに jQuery を挿入することです。

新しいユーザーをデータベースに追加するときに、フックを使用しuser_profile_update_errorsてユーザー メタを更新することができます (ハックとしても)。

更新:新しいフィールドは次の方法で追加できます。

add_action( 'user_new_form', function( $type ){
    if( 'add-new-user' !== $type )
        return;
    echo '<input type="text" name="custom_user_field" id="custom_user_field" value=""/>';
});

投稿されたデータを取得して処理するには、次を使用します。

add_action( 'user_profile_update_errors', function( $data )
{
    if ( is_wp_error( $data->errors ) && ! empty( $data->errors ) ) 
        return;

    # Do your thing with $_POST['custom_user_field'] 
    wp_die( sprintf( '<pre>%s</pre>', print_r( $_POST, true ) ) );
});
于 2013-04-06T03:35:38.800 に答える
1

ここで提案されている「user_profile_update_errors」フックでは、メタ フィールドを保存するための user_id が得られないことがわかりました。したがって、以下のコードのように「user_register」を使用するように変更しました。

うまくいけば、これは他の誰かを助けるでしょう。

//  add fields to new user form
add_action( 'user_new_form', 'mktbn_user_new_form' );

function mktbn_user_new_form()
{
?>    

<table class="form-table">
    <tbody>
    <tr class="form-field">
        <th scope="row"><label for="business_name">Company </label></th>
        <td><input name="business_name" type="text" id="business_name" value=""></td>
    </tr>    

    <tr class="form-field">
        <th scope="row"><label for="business_type">Profession </label></th>
        <td><input name="business_type" type="text" id="business_type" value=""></td>
    </tr>    

    <tr class="form-field">
        <th scope="row"><label for="user_mobile">Mobile </label></th>
        <td><input name="user_mobile" type="text" id="user_mobile" value=""></td>
    </tr>

    </tbody>
</table>


<?php   
}

//  process the extra fields for new user form
add_action( 'user_register', 'mktbn_user_register', 10, 1 );

function mktbn_user_register( $user_id )
{
    mikakoo_log( 'user_register: ' . $user_id );

    if ( isset( $_POST['business_name'] ))
    {
        update_user_meta($user_id, 'business_name', $_POST['business_name']);
    }

    if ( isset( $_POST['business_type'] ))
    {
        update_user_meta($user_id, 'business_type', $_POST['business_type']);
    }

    if ( isset( $_POST['user_mobile'] ))
    {
        update_user_meta($user_id, 'user_mobile', $_POST['user_mobile']);
    }
}
于 2015-07-17T15:31:05.220 に答える