Hola, me gustaría ocultar una página en concreto de mi web a los usuarios no logueados, pero sin plugin. Aunque sea con CSS utilizando: la clase .logged-in
La página en cuestión es: page-id-9560
Por favor, algún código de CSS válido?. También me serviría en php
Gracias de antemano.
Contenido solo visible a usuarios registrados
Hola Tomás.
Prueba añadir lo siguiente en el archivo functions.php que encontrarás en wp-content -> themes -> tu-plantilla o si utilizas algún plugin como puede ser Code Snippets
if( !function_exists('we_restrict_access_without_login') ):
add_action( 'template_redirect', 'we_restrict_access_without_login' );
function we_restrict_access_without_login(){
/* obtenemos la página actual o ID de la publicación */
$page_id = get_queried_object_id();
/* agregamos una listas de IDs de páginas o publicaciones para restricción */
$behind_login_pages = [ 9560 ];
if( ( !empty($behind_login_pages) && in_array($page_id, $behind_login_pages) ) && !is_user_logged_in() ):
wp_die(' No tienes permiso para acceder a esta página.');
return;
exit;
endif;
}
endif;
Utilizamos la función get_queried_object_id() para obtener el ID de la página o post que estamos visitando. Una vez comprobado el ID de la página/post, con la variable $behind_login_pages le pasamos el ID o IDs de páginas que queremos restringir. Por último añadimos la condición if( ( !empty($behind_login_pages) && in_array($page_id, $behind_login_pages) ) && !is_user_logged_in() ): la que nos comprobará si el usuario ha iniciado sesión o no y si la página está restringida.
Si el usuario no ha iniciado sesión y la página está restringida, le mostrará el mensaje "No tienes permiso para acceder a esta página"
Un Saludo
Muchas gracias Pepe y si fueran varias páginas, sería así?
$behind_login_pages = [ 9560, 9561, 9562, 9563 ]
Hola Tomás.
Exacto, solo tienes que añadir los IDs de las páginas que quieres restringir el acceso.
Un Saludo
Hola Tomás.
Nada, como siempre un placer poder orientaros en lo que nos sea posible.
Cualquier consulta que tengas no dudes en comunicarlo.
Un saludo