Editar usuario desde el frontend
/*
* Shortcode: [rg_edit_user]
* Permite al usuario logueado editar sus datos:
* – Nombre
* – Apellido
* – DNI / Contraseña (envía correo si cambia)
* – Email no editable
* – Muestra Tipo de suscripción según el rol (solo lectura)
*/
add_shortcode( ‘rg_edit_user’, function( $atts ) {
if ( ! is_user_logged_in() ) {
return ‘
Debes iniciar sesión para editar tus datos.
‘;
}
$current_user = wp_get_current_user();
$user_id = $current_user->ID;
$min_pass_length = 6;
$errors = array();
$success = ”;
if ( $_SERVER[‘REQUEST_METHOD’] === ‘POST’ && isset( $_POST[‘rg_edit_user_nonce’] ) ) {
if ( ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST[‘rg_edit_user_nonce’] ) ), ‘rg_edit_user_action’ ) ) {
$errors[] = ‘Token de seguridad inválido.’;
} else {
$first_name = isset($_POST[‘rg_user_first’]) ? sanitize_text_field($_POST[‘rg_user_first’]) : ”;
$last_name = isset($_POST[‘rg_user_last’]) ? sanitize_text_field($_POST[‘rg_user_last’]) : ”;
$password = isset($_POST[‘rg_user_pass’]) ? wp_unslash($_POST[‘rg_user_pass’]) : ”;
if ( empty( $first_name ) ) $errors[] = ‘El nombre es obligatorio.’;
if ( empty( $last_name ) ) $errors[] = ‘El apellido es obligatorio.’;
if ( $password && strlen($password) $user_id,
‘first_name’ => $first_name,
‘last_name’ => $last_name
);
if ( $password ) {
$update_data[‘user_pass’] = $password;
}
wp_update_user( $update_data );
$success = ‘Datos actualizados correctamente.’;
// Enviar correo si cambió la contraseña
if ( $password ) {
$login_url = ‘https://centrodeingenierosdemendoza.com.ar/mi-cuenta/’;
$logo_url = ‘https://centrodeingenierosdemendoza.com.ar/wp-content/uploads/2025/10/logo.png’; // reemplazar por tu logo
$subject = ‘Tu contraseña ha sido actualizada’;
$message = ”;
$message .= ‘
‘;
$message .= ”
Hola $first_name $last_name,
“;
$message .= ”
Tu contraseña (DNI) ha sido actualizada:
“;
$message .= ”
“;
$message .= ”
Usuario: {$current_user->user_email}
“;
$message .= ”
Nueva contraseña (DNI): $password
“;
$message .= ”
“;
$message .= ‘
Puedes iniciar sesión aquí: ‘ . esc_html( $login_url ) . ‘
‘;
$message .= ”
¡Gracias!
“;
$message .= ”;
$headers = array(‘Content-Type: text/html; charset=UTF-8’);
wp_mail( $current_user->user_email, $subject, $message, $headers );
$success .= ‘ Se envió un correo con la nueva contraseña.’;
}
}
}
}
// Valores iniciales
$val_first = isset($first_name) ? esc_attr($first_name) : esc_attr($current_user->first_name);
$val_last = isset($last_name) ? esc_attr($last_name) : esc_attr($current_user->last_name);
$val_email = esc_attr($current_user->user_email);
// Determinar tipo de suscripción según rol
$role = isset($current_user->roles[0]) ? $current_user->roles[0] : ”;
$subscription_type = ‘Otro’;
if ( $role === ‘subscriber’ ) $subscription_type = ‘Sin Acceso’;
if ( $role === ‘customer’ ) $subscription_type = ‘Con Acceso’;
ob_start();
if ( ! empty( $errors ) ) {
echo ‘
‘;
foreach ( $errors as $e ) echo ‘
‘ . esc_html( $e ) . ‘
‘;
echo ‘
‘;
}
if ( $success ) {
echo ‘
‘ . $success . ‘
‘;
}
?>
Nombre
Apellido
Email / Usuario
DNI / Contraseña
Debe tener al menos caracteres si deseas cambiarla.
Tipo de suscripción
Actualizar datos
return ob_get_clean();
} );
*/