¿Puedo ocultar categorías a invitados?

  • Autor Autor tututospanish
  • Fecha de inicio Fecha de inicio
T

tututospanish

Hola, quería saber si puedo ocultar ciertas categorias a los invitados e mi web, y los que se registren si que puedan verlo,¿es posible con algún pugin o de otra forma?
 
Si es posible, ¿con que? no se
 
Si lo quieres ocultar del menú categoria, deberás editar el sidebar de tu theme, a continuación busca la función wp_list_categories, que será algo así:

Insertar CODE, HTML o PHP:
<?php wp_list_categories('orderby=name&show_count=1'); ?>

dejala como está y añade antes del ' último &exclude='.$excluir_cat dejandolo así

Insertar CODE, HTML o PHP:
<?php wp_list_categories('orderby=name&show_count=1&exclude='.$excluir_cat); ?>

Podría ser que en vez de '' tubiese "" el procedimiento es el mismo solo que reemplazando los ' que puse por ".

Bien, por ultimo hay que añadir encima de wp_list_categories lo siguiente:

Insertar CODE, HTML o PHP:
if (is_user_logged_in()) {$excluir_cat='1,2,3,4,5,6'}

deberás añadir los ids de las categorias separados por "," esto quedaría así

Insertar CODE, HTML o PHP:
<?php if (is_user_logged_in()) {$excluir_cat='1,2,3,4,5,6'} wp_list_categories('orderby=name&show_count=1&exclude='.$excluir_cat); ?>

Con eso desaparecerian las categorias que tu dijeses del menú categorías... ahora si quieres que al entrar en la categoría no les salga nada, deberás editar el category.php o archive.php si no existe ninguno de estos dos archivos, deberás editar el index.php y añadir <?php if (is_user_logged_in() and is_category('id')) { }else{ echo'Solo usuarios registrados pueden ver el contenido'; }?> donde aparece el contenido

Eso es todo...
 
Un pequeño apunte, en el codigo que poner estarías excluyendo las categorias a los que ya han iniciado sesion, cuando supongo que lo querrá hacer para los visitantes,por tanto el codigo quedaría asi:

PHP:
if (is_user_logged_in()) { $excluir_cat=''; }
else {$excluir_cat='1,2,3,4,5';} wp_list_categories('orderby=name&show_count=1&exclude='.$excluir_cat); ?>

Es decir si esta logueado le muestra todas las categorias y sino lo esta le excluyes las que tu quieras. Aun asi esto solo las quitaría del listado no he probado a si podrían acceder a ellas a traves de la url o no, aunque deduzco que si que podrían.
 
Bueno, me equivoqué, pero en todo caso quedaría así:

Insertar CODE, HTML o PHP:
if (!is_user_logged_in()) {
$excluir_cat='1,2,3,4,5';
}

y si se puede entrar a travez de la url, pero si hace todo lo que le indico no...
 
Si, asi tambien funcionaría pero depende de la configuración del servidor podría dar errores ya que si estas logueado no esta invocada la variable y podria dar un error del tipo variable no definida, además no hace falta negar una condición cuando se puede arreglar de la forma que expongo. Aun así ambas formas funcionarian
 
Wordpress por defecto oculta las notificaciones de PHP, de todas formas eso se arregla poniendo $excluir_cat=''; encim del if que yo dije y listo... no hace falta un else para nada.