Publica artículos sólo para usuarios registrados en WordPress

Ayer comenté que intentaría mejorar un poco el script que descubrí vía AyudaWordPress. Pues bien, ya está modificado y con él tan sólo es necesario añadir el campo personalizado “login” con el valor “1” al artículo que se quiera bloquear para permitir el acceso sólo a usuarios registrados. El código es el que tenéis a continuación, y básicamente impide acceder a los artículos que tengan dicho campo personalizado con el valor 1 si el usuario no ha iniciado sesión, sin embargo sí que es visible en el índice del blog o en el archivo (al igual que en el feed).

El código está comentado, explicando qué hace cada cosa, espero que os sirva de ayuda. Para utilizarlo basta con ponerlo en el archivo functions.php de vuestro theme, o podéis descargar este archivo y subirlo a la carpeta de plugins y activarlo como un plugin más, tiene el mismo resultado.

<?php // Nuestra funcion para forzar el inicio de sesion function forzar_login() { if (is_single()) { global $post; // Obtenemos la informacion respecto al articulo actual if (get_post_meta($post->ID, 'login', true) == '1') // Comprobamos el valor del campo personalizado login { // Para ver este articulo tiene que estar registrado if (!is_user_logged_in()) // Comprobamos si el usuario ha iniciado sesion { // No ha iniciado sesion, redirigimos auth_redirect(); } else { // Ha iniciado sesion, luego puede ver el articulo } } else { // Puede ver este articulo tranquilamente porque no esta bloqueado } } else { // Esta viendo el articulo desde una pagina de archivo o el index del blog, se podria ocultar aqui tambien, pero la idea es que el usuario pueda ver el articulo en las listas pero para poder leerlo al completo tenga que iniciar sesion, asi que dejaremos esto tal cual return; } } add_action('wp', 'forzar_login'); // Añadimos la funcion a la accion ?>
Code language: PHP (php)

2 thoughts on “Publica artículos sólo para usuarios registrados en WordPress

Leave a Reply

Your email address will not be published.

Required fields are marked *

Your avatar