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 . ‘
‘;
}
?>
Nombre
Apellido
Email (será el usuario)
DNI (será la contraseña)
Debe tener al menos caracteres.
Tipo de suscripción
Sin Acceso
Con Acceso
Crear usuario
return ob_get_clean();
});
*/