Crear Usuario desde el frontend
/*
* Shortcode: [rg_admin_create_user]
* Crea usuarios desde el frontend (solo administradores o editores)
* – Email como usuario (user_login)
* – DNI como contraseña
* – Guarda Nombre, Apellido, Rol, Display Name
* – Envía correo con logo y link a /mi-cuenta/
*/add_shortcode( ‘rg_admin_create_user’, function() {// Solo admin o editor
if ( ! is_user_logged_in() ) {
return ‘Debes iniciar sesión como administrador o editor para usar este formulario.‘;
}$current = wp_get_current_user();
if ( ! array_intersect( [‘administrator’, ‘editor’], $current->roles ) ) {
return ‘No tienes permisos para crear usuarios desde aquí.‘;
}$min_pass_length = 6;
$errors = [];
$success = ”;if ( $_SERVER[‘REQUEST_METHOD’] === ‘POST’ && isset( $_POST[‘rg_create_user_nonce’] ) ) {
if ( ! wp_verify_nonce( sanitize_text_field( $_POST[‘rg_create_user_nonce’] ), ‘rg_create_user_action’ ) ) {
$errors[] = ‘Token de seguridad inválido. Recarga la página e intenta de nuevo.’;
} else {$first_name = sanitize_text_field( $_POST[‘rg_user_first’] ?? ” );
$last_name = sanitize_text_field( $_POST[‘rg_user_last’] ?? ” );
$user_email = sanitize_email( $_POST[‘rg_user_email’] ?? ” );
$password = $_POST[‘rg_user_pass’] ?? ”;
$role = sanitize_key( $_POST[‘rg_user_role’] ?? ‘subscriber’ );if ( empty( $first_name ) ) $errors[] = ‘El nombre es obligatorio.’;
if ( empty( $last_name ) ) $errors[] = ‘El apellido es obligatorio.’;
if ( empty( $user_email ) || ! is_email( $user_email ) ) $errors[] = ‘Debes indicar un email válido.’;
if ( empty( $password ) ) $errors[] = ‘El DNI (contraseña) es obligatorio.’;
elseif ( strlen( $password ) get_error_message() );
} else {
// Asignar rol
$u = new WP_User( $user_id );
$u->set_role( $role );// Nombre completo
$display_name_value = trim( $first_name . ‘ ‘ . $last_name );
if ( empty( $display_name_value ) ) {
$display_name_value = $user_email;
}// Actualizar datos
wp_update_user( [
‘ID’ => $user_id,
‘first_name’ => $first_name,
‘last_name’ => $last_name,
‘display_name’ => $display_name_value,
‘nickname’ => $first_name ?: $user_email
] );// Enviar correo
$role_label = ( $role === ‘customer’ ) ? ‘Con Acceso’ : ‘Sin Acceso’;
$login_url = ‘https://centrodeingenierosdemendoza.com.ar/mi-cuenta/’;
$logo_url = ‘https://centrodeingenierosdemendoza.com.ar/wp-content/uploads/LOGO-1-CIMZA.jpg’;$subject = ‘Tu usuario ha sido creado’;
$message = ”;
$message .= ‘‘;
$message .= ”;
$message .= ‘‘;
$message .= ‘Hola ‘ . esc_html( $display_name_value ) . ‘,‘;
$message .= ‘Tu usuario ha sido creado correctamente. Aquí tienes los datos de acceso:‘;
$message .= ‘‘;$message .= ‘
Usuario (Email): ‘ . esc_html( $user_email ) . ‘‘;
$message .= ‘Contraseña (DNI): ‘ . esc_html( $password ) . ‘‘;
$message .= ‘Tipo de suscripción: ‘ . esc_html( $role_label ) . ‘‘;
$message .= ‘‘;
$message .= ‘Puedes iniciar sesión aquí: ‘ . esc_html( $login_url ) . ‘‘;
$message .= ‘Centro de Ingenieros de Mendoza‘;
$message .= ”;$headers = [ ‘Content-Type: text/html; charset=UTF-8’ ];
wp_mail( $user_email, $subject, $message, $headers );$success = ‘Usuario creado correctamente y correo enviado.’;
if ( current_user_can( ‘edit_users’ ) ) {
$success .= ‘ Editar usuario’;
}// Limpiar valores
$first_name = $last_name = $user_email = $password = ”;
}
}
}
}ob_start();
if ( ! empty( $errors ) ) {
echo ‘‘;
foreach ( $errors as $e ) echo ‘
‘ . esc_html( $e ) . ‘‘;
echo ‘‘;
}
if ( $success ) {
echo ‘‘ . $success . ‘‘;
}?>NombreApellidoEmail (será el usuario)DNI (será la contraseña)Debe tener al menos caracteres.Tipo de suscripciónSin Acceso
Con AccesoCrear usuarioreturn ob_get_clean();
});*/