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 . ‘‘;
}
?>NombreApellidoEmail / UsuarioDNI / ContraseñaDebe tener al menos caracteres si deseas cambiarla.Tipo de suscripciónActualizar datosreturn ob_get_clean();
} );*/