Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

Problema con categorías anidadas

Estas en el tema de Problema con categorías anidadas en el foro de WordPress en Foros del Web. Hola a tod@s, Tengo un problemilla con mi blog. Resulta que he creado un listado de categorías donde unas están anidadas dentro de otras. El ...
  #1 (permalink)  
Antiguo 28/09/2010, 03:18
 
Fecha de Ingreso: enero-2008
Ubicación: Madrid
Mensajes: 72
Antigüedad: 16 años, 2 meses
Puntos: 1
Problema con categorías anidadas

Hola a tod@s,

Tengo un problemilla con mi blog. Resulta que he creado un listado de categorías donde unas están anidadas dentro de otras. El problema es que si hago clic en la categoría principal me aparecen los post de la categoría principal y los de las subcategorías que están anidadas bajo esa categoría principal. ¿Hay alguna manera de hacer que sólo aparezcan los post de la categoría que cliqueo?

Saludos y gracias!
  #2 (permalink)  
Antiguo 28/09/2010, 08:22
Avatar de xavito  
Fecha de Ingreso: agosto-2003
Mensajes: 61
Antigüedad: 20 años, 7 meses
Puntos: 5
Respuesta: Problema con categorías anidadas

Mira, esto está en la ayuda de wp:

To display posts from either category 2 OR 6, you could use cat as mentioned above, or by using category__in (note this does not show posts from any children of these categories):

query_posts(array('category__in' => array(2,6)));
  #3 (permalink)  
Antiguo 28/09/2010, 10:29
 
Fecha de Ingreso: enero-2008
Ubicación: Madrid
Mensajes: 72
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Problema con categorías anidadas

Lo he probado. He puesto el código en la página archive.php antes del loop como pone la documentación pero me siguen apareciendo los post de las subcategorías.
  #4 (permalink)  
Antiguo 28/09/2010, 13:15
Avatar de Nekko
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Buenos Aires
Mensajes: 3.141
Antigüedad: 16 años
Puntos: 656
Respuesta: Problema con categorías anidadas

Nacho, a mi eso me pasó alguna vez y coloqué la categoría que quería listar y las categorías hijas que NO quería que se muestren:

query_posts('cat=34,-1, -2, -3');

Finalmente opté por cambiar la estructura de categorías porque no me gustó tener que hacer esto, pero quizás mi "enmiendo" te pueda ayudar.
__________________
Taller para crear themes wordpress desde cero | Presupuestos para trabajos particulares vía MP
  #5 (permalink)  
Antiguo 28/09/2010, 14:57
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: Problema con categorías anidadas

Cita:
Iniciado por Nekko Ver Mensaje
Nacho, a mi eso me pasó alguna vez y coloqué la categoría que quería listar y las categorías hijas que NO quería que se muestren:

query_posts('cat=34,-1, -2, -3');

Finalmente opté por cambiar la estructura de categorías porque no me gustó tener que hacer esto, pero quizás mi "enmiendo" te pueda ayudar.
Eso te pasa por no preguntar en el foro =P

Primero debemos decirle al sistema en qué categoría nos encontramos en ese momento:

Código PHP:
Ver original
  1. $catquery = get_query_var('cat');
  2. foreach((get_the_category()) as $category)
  3.   $c = $category->term_id == $catquery ? $category->term_id : null;

Luego armamos el query como siempre, con la diferencia de que esta vez usaremos una variable para indicar la categoría actual:

Código PHP:
Ver original
  1. <?php query_posts(array('category__in'=>array('. $c .')) ?>

Y luego colocamos el loop. Aparecerán sólo los artículos de esa categoría, sin importar que estén ligados a categorías hijas u otras.
  #6 (permalink)  
Antiguo 28/09/2010, 17:20
Avatar de Nekko
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Buenos Aires
Mensajes: 3.141
Antigüedad: 16 años
Puntos: 656
Respuesta: Problema con categorías anidadas

Gracias Meta!

Ahora pregunto algo, es un bug de WP esto o nosotros estamos dando un mal uso de los recursos? En codex indica que no debería traer posts de categorías hijas y sin embargo...

Saludos
__________________
Taller para crear themes wordpress desde cero | Presupuestos para trabajos particulares vía MP
  #7 (permalink)  
Antiguo 29/09/2010, 03:49
 
Fecha de Ingreso: enero-2008
Ubicación: Madrid
Mensajes: 72
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Problema con categorías anidadas

Hola de nuevo,

En primer lugar daros las gracias por la ayuda.

He probado el código que indica metacortex pero no me funciona. Ahora no me aparece ningún post en ninguna categoría.

Esto es lo que he hecho: he editado el archivo archive.php y le he puesto este código

<?
$catquery = get_query_var('cat');
foreach((get_the_category()) as $category)
$c = $category->term_id == $catquery ? $category->term_id : null;

query_posts(array('category__in'=>array('. $c .')))
?>

justo antes de <?php while (have_posts()) : the_post(); ?>

Que estoy haciendo mal??

Gracias de nuevo!
  #8 (permalink)  
Antiguo 29/09/2010, 05:12
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: Problema con categorías anidadas

Cita:
Iniciado por Nekko Ver Mensaje
Gracias Meta!

Ahora pregunto algo, es un bug de WP esto o nosotros estamos dando un mal uso de los recursos? En codex indica que no debería traer posts de categorías hijas y sin embargo...

Saludos
¿En qué parte del codex lo has leido?
  #9 (permalink)  
Antiguo 01/10/2010, 08:26
Avatar de Nekko
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Buenos Aires
Mensajes: 3.141
Antigüedad: 16 años
Puntos: 656
Respuesta: Problema con categorías anidadas

Lo volví a buscar en el codex y no lo encuentro. No es el que mostró xavito. Quizás lo malinterpreté yo, suele pasar cuando uno se encierra con algo a lo que no le encuentra la vuelta.
__________________
Taller para crear themes wordpress desde cero | Presupuestos para trabajos particulares vía MP
  #10 (permalink)  
Antiguo 01/10/2010, 11:11
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: Problema con categorías anidadas

Jejeje sí me había extrañado un poco, porque el artículo de query_posts lo especifica en la parte de categorías:

Cita:
Display posts from only one category ID (and any children of that category):
Algo que olvidé comentarte es que la función get_query_var (la que usamos anteriormente para llamar a la categoría actual) representa una de las funciones raíces de consulta a la BD con las cuales se construyen muchas funciones derivadas y tags. Resulta especialmente útil cuando vamos a armar nuestro propias funciones, pues con ello nos brincamos un montón de procesos secundarios y nos vamos casi directamente a la raiz del query.
  #11 (permalink)  
Antiguo 04/10/2010, 09:29
 
Fecha de Ingreso: enero-2008
Ubicación: Madrid
Mensajes: 72
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Problema con categorías anidadas

Hola de nuevo,

Sigo haciendo pruebas y no doy con la manera de mostrar sólo los post de la categoría sin mostrar las de las subcategorias. metacortex ¿Que es lo que estoy haciendo mal? Muchas gracias por la ayuda!!
  #12 (permalink)  
Antiguo 04/10/2010, 15:21
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: Problema con categorías anidadas

Cita:
Iniciado por Nachoseo Ver Mensaje
Hola de nuevo,

Sigo haciendo pruebas y no doy con la manera de mostrar sólo los post de la categoría sin mostrar las de las subcategorias. metacortex ¿Que es lo que estoy haciendo mal? Muchas gracias por la ayuda!!
Nachoseo, si no muestras código nadie te podrá ayudar. Abre el archivo donde estás trabajando el asunto de las categorías, copia todo y pégalo aquí (entre etiquetas [php] por favor).
  #13 (permalink)  
Antiguo 05/10/2010, 03:01
 
Fecha de Ingreso: enero-2008
Ubicación: Madrid
Mensajes: 72
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Problema con categorías anidadas

Hola Metacortex,

Este es el código en el que estoy haciendo las modificaciones, el archivo archive.php del theme de Wordpress. El problema que tengo ahora es que no me aparece ningún post.

Código PHP:
<?php get_header(); ?>

    <div id="sinmenu" class="narrowcolumn">

        <?php if (have_posts()) : ?>

       <?php $post $posts[0]; // Hack. Set $post so that the_date() works. ?>
       <?php /* If this is a category archive */ if (is_category()) { ?>
        <h2 class="pagetitle">Archivo ‘<?php single_cat_title(); ?>’ </h2>
       <?php /* If this is a tag archive */ } elseif( is_tag() ) { ?>
        <h2 class="pagetitle">Posts Tagged ‘<?php single_tag_title(); ?>’</h2>
       <?php /* If this is a daily archive */ } elseif (is_day()) { ?>
        <h2 class="pagetitle">Archivo <?php the_time('F jS, Y'); ?></h2>
       <?php /* If this is a monthly archive */ } elseif (is_month()) { ?>
        <h2 class="pagetitle">Archivo <?php the_time('F, Y'); ?></h2>
       <?php /* If this is a yearly archive */ } elseif (is_year()) { ?>
        <h2 class="pagetitle">Archivo<?php the_time('Y'); ?></h2>
      <?php /* If this is an author archive */ } elseif (is_author()) { ?>
        <h2 class="pagetitle"> Archivo autor</h2>
       <?php /* If this is a paged archive */ } elseif (isset($_GET['paged']) && !empty($_GET['paged'])) { ?>
        <h2 class="pagetitle">Archivos del blog</h2>
       <?php ?>
        
        <?
            $catquery 
get_query_var('cat');
            foreach((
get_the_category()) as $category)
            
$c $category->term_id == $catquery $category->term_id null;

            
query_posts(array('category__in'=>array('. $c .')))

        
?>

        <?php while (have_posts()) : the_post(); ?>
        <div class="post">
                <h3 id="post-<?php the_ID(); ?>" class="h2portada"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3>

                <div class="entrada">
                    <?php the_excerpt('Leer m&aacute;s &raquo;'); ?>
                </div>

                <p class="postmetadata"><?php the_tags('Tags: '', ''<br />'); ?> Categor&iacute;as: <?php the_category(', '?> | <?php edit_post_link('Editar'''' | '); ?>  <?php comments_popup_link('No hay comentarios »''1 Comentario »''% Comentarios »'); ?></p>

            </div>

        <?php endwhile; ?>

        <div class="navigation">
            <div class="alignleft"><?php next_posts_link('&laquo; Older Entries'?></div>
            <div class="alignright"><?php previous_posts_link('Newer Entries &raquo;'?></div>
        </div>

    <?php else : ?>

        <h2 class="center">Not Found</h2>
        <?php include (TEMPLATEPATH '/searchform.php'); ?>

    <?php endif; ?>

    </div>

<?php get_sidebar(); ?>

<?php get_footer(); ?>
Muchas gracias por la ayuda
  #14 (permalink)  
Antiguo 05/10/2010, 03:12
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: Problema con categorías anidadas

A primera vista estás colocando tu query_posts antes de la condicional if(have_posts) cuando debería ir primero. Dale un vistazo a la estructura de The Loop.

Esto no tiene sentido:
Código PHP:
Ver original
  1. <?php $post = $posts[0]; // Hack. Set $post so that the_date() works. ?>

Por otro lado, se nota que el código no pertenece a una página de categorías como tal, sino que se trata de un index.php genérico, cierto?. Para crear funciones complejas de categorías es mejor que separes archivos y trabajes sobre category.php (si no existe créalo). Por ejemplo, el nuevo código que metiste no se encuentra sujeto a ninguna condicional que indique que sólo se activará si pertenece a una categoría, por lo que podría generarte añgun error si estás en páginas internas o dentro de entradas o tags.
  #15 (permalink)  
Antiguo 05/10/2010, 04:53
 
Fecha de Ingreso: enero-2008
Ubicación: Madrid
Mensajes: 72
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Problema con categorías anidadas

Hola Metacortex,

En primer lugar darte las gracias de nuevo por tu ayuda. Mira lo que me pasa ahora, me he creado un archivo category.php partiendo del archivo category que viene con la plantilla de Wordpress lo que pasa que ahora no me aparecen los post, este es el código. No se porque no se me muestran los post y no veo el Loop para poner el código que me indicaste:

Código PHP:
<?php get_header(); ?>
  
        
    <div id="sinmenu" class="narrowcolumn">

                <h1 class="page-title"><?php
                    printf
__'Category Archives: %s''twentyten' ), '<span>' single_cat_title''false ) . '</span>' );
                
?></h1>
                <?php
                    $category_description 
category_description();
                    if ( ! empty( 
$category_description ) )
                        echo 
'<div class="archive-meta">' $category_description '</div>';

                
/* Run the loop for the category page to output the posts.
                 * If you want to overload this in a child theme then include a file
                 * called loop-category.php and that will be used instead.
                 */
                
get_template_part'loop''category' );
                
?>

    </div>

<?php get_sidebar(); ?>

<?php get_footer(); ?>
Muchas gracias por la ayuda!!

Etiquetas: anidadas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:43.