如何在创建新用户后立即访问wp_usermeta数据

时间:2016-10-05 作者:LeonardShelby

我试图找到一个WordPress操作挂钩,它允许我在创建新用户后立即访问新用户的wp\\u usermeta信息。在我们的注册过程中,自定义字段与标准WordPress用户字段一起输入。到目前为止,我已经试过用钩子了user_register, 但这行不通。我有点期待user_register 行不通,因为它的法典条目上写着:

https://codex.wordpress.org/Plugin_API/Action_Reference/user_register

触发此操作时,并非所有用户元数据都存储在数据库中。例如,昵称在数据库中,但first\\u name和last\\u name不在数据库中(从3.9.1开始)

事实证明,情况就是这样。如果使用user_regsiter

我的职能概述如下:

add_action( \'user_register\', \'myfunction\', 10, 1 );

function myfunction ( $userid ) {

    $user_object = get_userdata( $userid );

    $user_fields = array(

                    //this is returned when using user_register hook
                    $user_object->user_login,

                    //this is *not* returned when using user_register hook
                    $user_object->some custom field
                    );

   //do stuff with $user_fields array
}
所以我的问题是,我能用什么钩子after 用户已注册,并且after 他们的用户元数据已写入wp\\U usermeta?

1 个回复
SO网友:Dave Romsey

这个edit_user_created_user 在通过添加用户时适用user-new.php:

add_action( \'edit_user_created_user\', \'wpse_edit_user_created_user\', 10, 2 ); //for user-new.php page new user addition
function wpse_edit_user_created_user( $user_id, $notify ) {
    $meta = get_user_meta( $user_id, \'my_field\', true );
}
为了完整性,我使用以下代码来测试用户元数据,这是我从this answer.

/**
 * Declaring the form fields
 */
function show_my_fields( $user ) {
   $fetched_field = get_user_meta( $user->ID, \'my_field\', true ); ?>
    <tr class="form-field">
       <th scope="row"><label for="my-field"><?php _e(\'Field Name\') ?> </label></th>
       <td><input name="my_field" type="text" id="my-field" value="<?php echo esc_attr($fetched_field); ?>" /></td>
    </tr>
<?php
}
add_action( \'show_user_profile\', \'show_my_fields\' ); //show in my profile.php page
add_action( \'edit_user_profile\', \'show_my_fields\' ); //show in my profile.php page

//add_action( \'user_new_form_tag\', \'show_my_fields\' ); //to add the fields before the user-new.php form
add_action( \'user_new_form\', \'show_my_fields\' ); //to add the fields after the user-new.php form

/**
 * Saving my form fields
 */
function save_my_form_fields( $user_id ) {
    update_user_meta( $user_id, \'my_field\', $_POST[\'my_field\'] );
}
add_action( \'personal_options_update\', \'save_my_form_fields\' ); //for profile page update
add_action( \'edit_user_profile_update\', \'save_my_form_fields\' ); //for profile page update

add_action( \'user_register\', \'save_my_form_fields\' ); //for user-new.php page new user addition

相关推荐

set a user-meta key as avatar

我有一个名为“meta kay”的用户;阿凡达;;此值包含用户上载的图像的URL。如何将此元值设置为用户化身?我使用此代码,但不工作add_filter( \'get_avatar\', \'slug_get_avatar\', 10, 5 ); function slug_get_avatar( $avatar, $id_or_email, $size, $default, $alt ) { //If is email, try and find user ID