¿Cómo agrego un campo en el perfil de Usuarios? Por ejemplo, país, edad, etc.

8

No soy muy bueno con las computadoras / códigos, etc. Utilizo un complemento que hace que el formulario de registro sea sencillo y en ese formulario agregué país, grupo de edad, género, etc. Hago clic en la opción que agregará el registrador en el usuario de wordpress. Pero cuando lo intento, solo se muestran el nombre de usuario y el correo electrónico en la sección Usuarios del servidor. ¿Hay alguna forma de que los otros campos se muestren en la sección de usuarios?

Los necesito para mostrar para usos estadísticos.

    
pregunta Chloe Aus 16.01.2016 - 09:40

3 respuestas

31

Debes usar los enlaces show_user_profile , edit_user_profile , personal_options_update y edit_user_profile_update .

Puede usar el siguiente código para agregar campos adicionales en la sección de Usuario

Código para agregar campos adicionales en la sección Editar usuario:

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

function extra_user_profile_fields( $user ) { ?>
    <h3><?php _e("Extra profile information", "blank"); ?></h3>

    <table class="form-table">
    <tr>
        <th><label for="address"><?php _e("Address"); ?></label></th>
        <td>
            <input type="text" name="address" id="address" value="<?php echo esc_attr( get_the_author_meta( 'address', $user->ID ) ); ?>" class="regular-text" /><br />
            <span class="description"><?php _e("Please enter your address."); ?></span>
        </td>
    </tr>
    <tr>
        <th><label for="city"><?php _e("City"); ?></label></th>
        <td>
            <input type="text" name="city" id="city" value="<?php echo esc_attr( get_the_author_meta( 'city', $user->ID ) ); ?>" class="regular-text" /><br />
            <span class="description"><?php _e("Please enter your city."); ?></span>
        </td>
    </tr>
    <tr>
    <th><label for="postalcode"><?php _e("Postal Code"); ?></label></th>
        <td>
            <input type="text" name="postalcode" id="postalcode" value="<?php echo esc_attr( get_the_author_meta( 'postalcode', $user->ID ) ); ?>" class="regular-text" /><br />
            <span class="description"><?php _e("Please enter your postal code."); ?></span>
        </td>
    </tr>
    </table>
<?php }

Código para guardar detalles de campos adicionales en la base de datos :

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

function save_extra_user_profile_fields( $user_id ) {
    if ( !current_user_can( 'edit_user', $user_id ) ) { 
        return false; 
    }
    update_user_meta( $user_id, 'address', $_POST['address'] );
    update_user_meta( $user_id, 'city', $_POST['city'] );
    update_user_meta( $user_id, 'postalcode', $_POST['postalcode'] );
}

También hay varias publicaciones de blog disponibles sobre el tema que podrían ser útiles:

respondido por el Arpita Hunka 16.01.2016 - 12:13
1

El complemento Campos personalizados personalizados le permitirá agregar campos a los perfiles de usuario sin ningún tipo de codificación.

    
respondido por el squarecandy 20.09.2017 - 05:33
0

Es mejor que uses get_user_meta en lugar de get_the_author_meta :

function extra_user_profile_fields( $user ) {
    $meta = get_user_meta($user->ID, 'meta_key_name',       false);
}
    
respondido por el T.Todua 04.12.2018 - 12:14

Lea otras preguntas en las etiquetas