Guardar metadatos personalizados de usuario en el registro

15 may 2017, 12:44:46
Vistas: 13.8K
Votos: 4

Estoy intentando crear mi propio formulario de registro y agregar el número de teléfono como campo obligatorio, y me gustaría guardar ese número de teléfono como metadato personalizado del usuario.

Después de validar y sanitizar los inputs, etc., mi código se ve así:

// esto retorna el valor correcto, etc. - string(9) "126777889"
var_dump($metas['user_phone'])

$user_id = wp_insert_user($fields);
add_user_meta( $user_id, 'user_phone', $metas['user_phone'] );

El usuario se crea correctamente, pero hay algo mal con el campo de metadatos del teléfono - en el backend se ve así: Captura de pantalla mostrando el problema con los metadatos

También probé este enfoque para verificar si existe el meta:

if(get_user_meta($user_id,'user_phone')) {
    update_user_meta($user_id,'user_phone');
} else {
    add_user_meta($user_id,'user_phone');    
}

También intenté agregar el meta con la acción 'user_register' así:

function addMyCustomMeta($user_id,$meta) {
    update_user_meta($user_id,$meta);
}
add_action('user_register','addMyCustomMeta',10,2,);

Y luego usándolo así:

$user_id = wp_insert_user($fields);
do_action('addMyCustomMeta',$user_id,$metas['user_phone']);

En todos los casos termino con la situación descrita en la imagen de arriba. Sin título de meta y el valor se guarda como múltiples "Array"

En la base de datos se ve bien:

Captura de la base de datos mostrando los metadatos

¿Tienes alguna idea de lo que estoy haciendo mal?

Gracias

2
Comentarios

¿Cómo imprimes los valores en tu código HTML? Compartir tu código html sería útil.

Laxmana Laxmana
15 may 2017 12:55:33
Todas las respuestas a la pregunta 1
1

Tienes que activar los siguientes hooks:

  • user_register
  • personal_options_update
  • edit_user_profile_update

    add_action('user_register', 'addMyCustomMeta');    
    add_action('personal_options_update', 'addMyCustomMeta' );    
    add_action('edit_user_profile_update','addMyCustomMeta' );    
    function addMyCustomMeta( $user_id ) {    
               update_user_meta( $user_id, 'user_phone', $_POST['user_phone'] ); 
    }
    

¡Espero que esto te ayude!

15 may 2017 13:22:19
Comentarios

¿En qué parte de mi código debería agregar las acciones? Quiero activarlas solo si todos los valores y metadatos son válidos, etc. Ver: http://gist.github.com/cafesk8/78e7ac3555aa94afcb35d815853c4365

Cafourek Cafourek
15 may 2017 14:54:45