• Estoy creando una web (que aún está en pañales) y he instalado el plugin UAM para restringir acceso a páginas a usuarios no registrados.

    En principio el registro lo realizo desde el Admin de wordpress porque así debe ser y haciendo pruebas de acceso logueado o no limita o no segun toca, eso funciona bien.

    El caso es que estas pruebas las hago entrando o no al Admin y lo que me gustaría (lógico) es tener un enlace en la web que pidiera un login y password para identificar al usuario registrado en el Admin->Usuarios.

    No encuentro como hacer el formulario de acceso o si debería instalar un segundo plug-in que me diera esta funcionalidad

    Gracias por adelantado a quien pueda echarme una mano

    La página con la que necesito ayuda: [accede para ver el enlace]

Viendo 15 respuestas - de la 1 a la 15 (de un total de 18)
  • Moderador kallookoo

    (@kallookoo)

    Hola @xavi74

    Si usas elementor, creo recordar que incluye el formulario de registro.

    Sobre el limitar las paginas/contenido te sugiero que pruebes este; https://es.wordpress.org/plugins/content-control/

    Iniciador del debate xavi74

    (@xavi74)

    Este enlace que me pasas parece ser más lo que ando buscando.

    Los usuarios no deben poder registrarse por sí mismos, para ello ya tengo un formulario donde solicitan ser dados de alta.

    Iniciador del debate xavi74

    (@xavi74)

    Existe un formulario de Login en Elementor pero es de pago y yo uso la versión gratuita de Elementor.

    Iniciador del debate xavi74

    (@xavi74)

    Ya he encontrado un plug-in que me añade un formulario de login (Osom Modal Login) por si a alguien le sirve.
    Ahora me gustaría saber cual es la variable que identifica al usuario logueado.

    Gracias a quien pueda echarme una mano.

    Moderador kallookoo

    (@kallookoo)

    Hola,

    No existe ninguna variable, se usan las cookies para mantener la sesion abierta. Luego cuando el WordPress detecta dichas cookies carga la informacion del usuario.

    Si necesitas saber si un usuario tiene la sesion iniciada existen la function de PHP is_user_logged_in();

    Exactamente porque lo preguntas? El WordPress o mejor dicho los plugins deberian hacerlo por si mismos.

    Iniciador del debate xavi74

    (@xavi74)

    Porque la web que tenía antes mi cliente estaba hecha en joomla y había una clase nativa de joomla de sistema que te devolvía el ID del usuario logueado.

    Moderador kallookoo

    (@kallookoo)

    Hola,

    Para el ID tienes; https://developer.wordpress.org/reference/functions/get_current_user_id/

    Si quieres obtener al usuario, aqui puedes consultar directamente el email, etc..; https://developer.wordpress.org/reference/functions/wp_get_current_user/

    Si quieres algun un dato concreto; https://developer.wordpress.org/reference/functions/get_user_meta/

    Saludos

    Iniciador del debate xavi74

    (@xavi74)

    Perfecto, get_current_user_id() me da el ID del usuario logueado como yo quería.

    Muchas gracias.

    Iniciador del debate xavi74

    (@xavi74)

    Lo que he detectado es que las mismas credenciales que adjudica a un usuario para que pueda acceder a la zona privada de la web también le sirven para acceder al wp-admin, aunque solo a una pequeña parte del wp-admin.
    ¿Habría alguna forma de hacer que sus credenciales sirvan para la zona privada de la web pero no para acceder al wp-admin?

    Moderador kallookoo

    (@kallookoo)

    Hola,

    Creo recordar que ese tipo de plugins no limitan el acceso al admin, lo mejor es que lo confirmes con los autores del plugin que uses o crear un pequeño plugin para redirijir cualquier usuario a la web si intenta entrar en cualquier url del wp-admin, lo unico es que no podrian usar la pagina de su perfil para cambiar su contraseña, etc…

    Iniciador del debate xavi74

    (@xavi74)

    Hola,

    A mí, que no puedan acceder al wp-admin para modificar nada casi me hace un favor.

    ¿Podrías darme, más o menos, el código para restringir su acceso menos el de admin y donde ponerlo?, si no es mucha molestia

    Moderador kallookoo

    (@kallookoo)

    Hola,

    Basicamente primero debes interceptar el usuario actual y comprobar su rol o capacidades y cuando no este dentro de rol administrator redirijir a la pagina que sea, la home, etc…

    Este hook; https://developer.wordpress.org/reference/hooks/auth_redirect/ te serviria para detectar si existe el usuario (que inicio sesion) y redirijirlo si fuese necesario

    function limit_admin_access() {
    	$request_uri = sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ?? '' ) );
    	if ( str_contains( $request_uri, 'wp-admin' ) && ! current_user_can( 'activate_plugins' ) ) {
    		wp_safe_redirect( home_url() );
    		exit;
    	}
    }
    add_action( 'auth_redirect', 'limit_admin_access' );

    En el ejemplo anterior (sin probarlo) comprueba que la url contiene wp-admin y que el usuario actual no tiene permisos de admin, con lo que se redirije a la home.

    Cuando añades codigo personalizado existen tres maneras:

    • Creando un plugin de personalizaciones
    • Usando el archivo functions.php del tema, aqui se debe crear un tema hijo si el tema no esta creado por uno mismo
    • Un plugin de snipets como por ejemplo; https://wordpress.org/plugins/code-snippets/

    La primera es la que se suele recomendar cuando no tiene relacion con el tema y la segunda es al contrario.

    La tercera se recomienda cuando no tienes conocimientos de programacion o por algun motivo no se utilizan las anteriores.

    • Esta respuesta fue modificada hace 2 semanas, 1 día por kallookoo.
    Iniciador del debate xavi74

    (@xavi74)

    Y del código que me pasas ¿Dónde pongo el shortcode que llama a esa función?

    Moderador kallookoo

    (@kallookoo)

    Que shortcode?

    Deduzco que usas el plugin de snipets y que yo recuerde los codigos se efecutan segun este configurado.

    Iniciador del debate xavi74

    (@xavi74)

    No, yo uso un bloque en elementor de «shortcode» y ahí hago la llamada a la función.

Viendo 15 respuestas - de la 1 a la 15 (de un total de 18)
  • Debes estar registrado para responder a este debate.