Artículos sólo para usuarios registrados en WordPress (Mejorado)

Ayer modifiqué un poco el script de AyudaWordPress, pero se quedó medio cojo: los artículos salían en el Feed y en el loop de WordPress, así que realmente no cumplía del todo su objetivo. Sin embargo lo he actualizado y he solventado ambas carencias, ahora funciona perfectamente. Y el uso es idéntico: se crea un artículo y se le añade el campo personalizado “login” con el valor “1” para que se oculte.

El código se debe añadir en el archivo functions.php del theme.

// 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 { global $wp_query; // Obtenemos la consulta $wp_query->query_vars['meta_key'] = 'login'; // Modificamos la nueva consulta para buscar articulos con proteccion $posts_a_excluir = array(); // En esta matriz almacenamos los articulos a ocultar while ($wp_query->have_posts()) : $wp_query->the_post(); if (get_post_meta($wp_query->post->ID, 'login', true) == '1') // Comprobamos el valor del campo personalizado login { // El articulo es solo para registrados, lo guardamos $posts_a_excluir[] = $wp_query->post->ID; } endwhile; $wp_query->query_vars['meta_key'] = ''; // Limpiamos modificaciones if (!is_user_logged_in()) $wp_query->query_vars['post__not_in'] = $posts_a_excluir; // Excluimos los articulos que se deben ocultar, solo si no ha iniciado sesion $wp_query->query($wp_query->query_vars); // Repetimos la consulta return; } } add_action('wp', 'forzar_login'); // Añadimos la funcion a la accion
Code language: PHP (php)

Como antes, el archivo listo para ser usado como plugin lo podéis descargar aquí.

11 thoughts on “Artículos sólo para usuarios registrados en WordPress (Mejorado)

Leave a Reply

Your email address will not be published.

Required fields are marked *

Your avatar