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

Mostrar posts por tipo dentro de una página de categoría

Estas en el tema de Mostrar posts por tipo dentro de una página de categoría en el foro de WordPress en Foros del Web. Hola a todos! Intentaré explicarme lo mejor que pueda, a ver: Estoy intentando montar una especie de guía con WordPress y la navegación lleva a ...
  #1 (permalink)  
Antiguo 14/12/2010, 06:42
 
Fecha de Ingreso: mayo-2009
Ubicación: Fuerteventura
Mensajes: 324
Antigüedad: 15 años, 7 meses
Puntos: 19
Pregunta Mostrar posts por tipo dentro de una página de categoría

Hola a todos!

Intentaré explicarme lo mejor que pueda, a ver: Estoy intentando montar una especie de guía con WordPress y la navegación lleva a páginas de categoría. Por ejemplo:

Dónde Ir (categoría padre)
Restaurantes (categoría hija)
Cafeterías (categoría hija)
etc...

Cuando un usuario entre en Restaurantes aparece un listado de los restaurantes del pueblo pero algunos de ellos serían restaurantes recomendados y me gustaría que aparecieran los primeros. La forma en que lo estoy haciendo es que un restaurante tiene las categorías 'Donde Ir' y 'Restaurante', y si es recomendado también tiene una categoría 'Recomendado'. Lo que estoy intentando es mostrar dos loops en la página de categoría, uno con los recomendados y abajo otro igual pero excluyendo la categoría de recomendados, pero no consigo que me funcione. El código que estoy usando es el siguiente:

Código PHP:
<?php if (have_posts()) : ?>
<h2 class="pagetitle"><?php echo single_cat_title(); ?></h2>
<?php query_posts($query_string.'&cat=39&showposts=4'); while (have_posts()) : the_post(); ?> 
<div class="vcard recomendado">
<h3 class="fn org" id="post-<?php the_ID(); ?>"><?php the_title(); ?></h3>
<?php the_content(); ?>
</div>
<?php endwhile; else: ?>
<h2 class="center">No encontrado</h2>
<?php include (TEMPLATEPATH '/searchform.php'); ?>
<?php 
endif; ?>
Para el loop donde no salen los recomendados es el mismo pero excluyendo la categoría

Código PHP:
<?php if (have_posts()) : ?>
<h2 class="pagetitle"><?php echo single_cat_title(); ?></h2>
<?php query_posts($query_string.'&cat=-39'); while (have_posts()) : the_post(); ?>
<div class="vcard">
<h3 class="fn org" id="post-<?php the_ID(); ?>"><?php the_title(); ?></h3>
<?php the_content(); ?>
</div>
<?php endwhile; else: ?>
<h2 class="center">No encontrado</h2>
<?php include (TEMPLATEPATH '/searchform.php'); ?>
<?php 
endif; ?>
He dado vueltas por el codex, por la red y por la ayuda y no he dado con ninguna solución, no puedo hacer que funcione en una página de categoría.

Gracias a todos por su tiempo de antemano

Salud!
  #2 (permalink)  
Antiguo 14/12/2010, 10:33
 
Fecha de Ingreso: julio-2009
Ubicación: Argentinalandia
Mensajes: 339
Antigüedad: 15 años, 5 meses
Puntos: 15
Respuesta: Mostrar posts por tipo dentro de una página de categoría

Cita:
Cuando un usuario entre en Restaurantes aparece un listado de los restaurantes del pueblo pero algunos de ellos serían restaurantes recomendados y me gustaría que aparecieran los primeros.
opciones:
A) si tu lo cargas, busca el plugin llamado Sticky http://wordpress.org/extend/plugins/wp-sticky/ (esto esta bueno si quieres cobrar algunos $$$ para aparecer primero)
B) si quieres que sea por clasificacion de usuarios, busca complementos como PostRanking e inserta lo mas ranqueado de cada categoria.
C) si quieres que sea por mas vistos, busca el complemento "postview".
Todos estos complementos tienen documentacion y te diran donde y como insertar el codigo php para mostrar como resultados.. los post. luego tu arreglas con un poco de css para adaptar a tu estilo.

Cita:
y si es recomendado también tiene una categoría 'Recomendado'.
te recomiendo que pongas manualmente los "recomendads" y crear una pagina especial para mostrar eso y darle un diseño super cool

Cita:
Lo que estoy intentando es mostrar dos loops en la página de categoría, uno con los recomendados y abajo otro igual pero excluyendo la categoría de recomendados, pero no consigo que me funcione. El código que estoy usando es el siguiente:
Yo una vez tuve que hacer algo similar con una pagina de un video club y tuve que hacer unca categoria de "recomendados"
espero que te ayude:

Mi codigo es:
Código PHP:
            <?php query_posts("s=$s&paged=$paged&cat=18"); ?>
            <?php while (have_posts()) : the_post(); ?>
            <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
            <span class="dropped">
            <img alt="Deje un comentario" src="<?php bloginfo('template_directory'); ?>/images/dropcomment.gif" />
            <?php comments_popup_link('Sin comentarios''1 Comentario''% Comentarios'); ?>
            </span></h2>
            <div class="#subpage .entrytext">
                <?php the_content('<p class="serif">Seguir leyendo &raquo;</p>'); ?>
            </div>
            <div style="clear: both">
            </div>
            <?php endwhile; ?>
y el tuyo podria quedar algo asi entonces:

Código PHP:
<?php query_posts("s=$s&paged=$paged&cat=18"); ?>
<?php 
while (have_posts()) : the_post(); ?>
<!-- hasta ahi agrege de mi codigo -->
<h2 class="pagetitle"><?php echo single_cat_title(); ?></h2>
<!-- saco esto porque ya lo llame antes <?php query_posts($query_string.'&cat=39&showposts=4'); while (have_posts()) : the_post(); ?> -->
<div class="vcard recomendado">
<h3 class="fn org" id="post-<?php the_ID(); ?>"><?php the_title(); ?></h3>
<?php the_content(); ?>
</div>
<!-- aca cambio <?php endwhile; else: ?> por: -->
<?php endwhile; ?>

<h2 class="center">No encontrado</h2>
<?php include (TEMPLATEPATH '/searchform.php'); ?>
<?php 
endif; ?>
de ultima... toma el primer codigo (el mio) y sacale lo excedente y colocale css que necesites.

salu2
__________________
Mi Perfil y Blog estan en Yeow.com.ar ✰✰✰✰✰
Pero en WONDED.COM estan Mis Proyectos OpenSource ;-)
  #3 (permalink)  
Antiguo 14/12/2010, 11:32
 
Fecha de Ingreso: mayo-2009
Ubicación: Fuerteventura
Mensajes: 324
Antigüedad: 15 años, 7 meses
Puntos: 19
Respuesta: Mostrar posts por tipo dentro de una página de categoría

Muchísimas gracias pleter, me has ayudado mucho, puede que use el plugin WP-Sticky. Al final de cabezota lo conseguí armar precisamente con sticky post, lo dejo aquí por si le sirve a alguien:

Código PHP:
<!-- ++++++ COLUMNA PRINCIPAL ++++++++++++ -->
<h2 class="pagetitle"><?php echo single_cat_title(); ?></h2>
<!-- Este primer loop muestra los posts marcados como fijos -->
<?php if (have_posts()) :
   
$sticky get_option('sticky_posts');
   
$argsFicha = array(
     
'post__in' => $sticky,
     
'cat' => $cat,
     
'showposts' => 4,
   );
   
query_posts($argsFicha);
   while (
have_posts()) : the_post(); ?>
<div class="vcard destacado">
<h3 class="fn org" id="post-<?php the_ID(); ?>"><?php the_title(); ?></h3>
<?php the_content(); ?>
</div>
<?php endwhile; else: ?>
<h2 class="center">No encontrado</h2>
<?php include (TEMPLATEPATH '/searchform.php'); ?>
<?php 
endif; ?>

<ul id="listado">
<!-- Este loop muestra los demás posts exceptuando los marcados como fijos -->
<?php if (have_posts()) : ?>
  <?php
    $paged 
= (get_query_var('paged')) ? get_query_var('paged') : 1;
    
$sticky get_option('sticky_posts');
    
$args = array(
      
'post__not_in' => $sticky,
      
'paged' => $paged,
      
'caller_get_posts'=> 1,
      
'cat' => $cat,
    );
    
query_posts($args); ?>
    <?php while (have_posts()) : the_post(); ?> 
<li class="vcard">
<h3 class="fn org" id="post-<?php the_ID(); ?>"><?php the_title(); ?></h3>
<?php the_content(); ?>
</li>
<?php endwhile; ?>
<div class="navigation">
<div class="alignleft"><?php next_posts_link('&laquo; Página anterior'?></div>
<div class="alignright"><?php previous_posts_link('Página siguiente &raquo;'?></div>
</div>
<?php else : ?>
<p><?php _e('Lo siento, no encontré nada para mostrar'); ?></p>
<?php endif; ?>
</ul>
<!-- Columna principal end -->
Gracias de nuevo

Salud!
  #4 (permalink)  
Antiguo 14/12/2010, 11:37
 
Fecha de Ingreso: julio-2009
Ubicación: Argentinalandia
Mensajes: 339
Antigüedad: 15 años, 5 meses
Puntos: 15
Respuesta: Mostrar posts por tipo dentro de una página de categoría

muchas de nada.
es un placer saber que fui util.

salu2 =)
cualquier duda vuelve.
__________________
Mi Perfil y Blog estan en Yeow.com.ar ✰✰✰✰✰
Pero en WONDED.COM estan Mis Proyectos OpenSource ;-)
  #5 (permalink)  
Antiguo 07/01/2011, 12:41
 
Fecha de Ingreso: mayo-2009
Ubicación: Fuerteventura
Mensajes: 324
Antigüedad: 15 años, 7 meses
Puntos: 19
Respuesta: Mostrar posts por tipo dentro de una página de categoría

Pues he tenido que volver, porque el código que puse arriba no funciona si la categoría no tiene ningún post fijo. Le he dado mil vueltas y no consigo que cuando el primer loop no encuentre ningún post fijo, el segundo funcione. Dejo aquí el código y la referencia del codex que estoy usando: http://codex.wordpress.org/Function_...ost_Parameters

¿Alguna idea?

Gracias a todos de antemano,

Salud!

Código PHP:
Ver original
  1. <!-- Este primer loop muestra los posts de la categoría marcados como fijos -->
  2. <?php
  3.    $sticky = get_option('sticky_posts');
  4.    $destacado = array(
  5.         'post__in' => $sticky,
  6.     'ignore_sticky_posts' => 1
  7.         'cat' => $cat,
  8.     'showposts' => 4,
  9.    );
  10.    query_posts($destacado);
  11.    while (have_posts()) : the_post(); ?>
  12. <div class="fijo">
  13. <h3><?php the_title(); ?></h3>
  14. <?php the_content(); ?>
  15. </div>
  16. <?php endwhile; ?>
  17.  
  18. <ul id="listado">
  19. <!-- Este loop muestra los demás posts exceptuando los marcados como fijos -->
  20. <?php if (have_posts()) : ?>
  21.   <?php
  22.     $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
  23.     $sticky = get_option('sticky_posts');
  24.     $args = array(
  25.         'post__not_in' => $sticky,
  26.         'paged' => $paged,
  27.         'cat' => $cat,
  28.     'showposts' => 6,
  29.     );
  30.     query_posts($args); ?>
  31.     <?php while (have_posts()) : the_post(); ?>
  32. <li class="normal">
  33. <h4><?php the_title(); ?></h4>
  34. <?php the_content(); ?>
  35. </li>
  36. <?php endwhile; ?>
  37. <div class="navigation">
  38. </div>
  39. <?php else : ?>
  40. <p><?php _e('Lo siento, no encontre nada para mostrar.'); ?></p>
  41. <?php endif; ?>
  42. </ul>
  #6 (permalink)  
Antiguo 10/01/2011, 05:01
 
Fecha de Ingreso: mayo-2009
Ubicación: Fuerteventura
Mensajes: 324
Antigüedad: 15 años, 7 meses
Puntos: 19
Respuesta: Mostrar posts por tipo dentro de una página de categoría

Por si le sirve a alguien, eliminé el condicional del segundo loop y se lo puse al primero y funciona correctamente. Se elimina la posibilidad de que una búsqueda por categorías que no de resultados no muestre nada pero como es una guía, sólo se añade una categoría si existe contenido para la misma ya que los menús se crean dinámicamente, por lo tanto las categorías sin contenido no existen.

Salud!

Código PHP:
Ver original
  1. <!-- posts marcados como fijos -->
  2. <?php if (have_posts()) :
  3.    $sticky = get_option('sticky_posts');
  4.    $destacado = array(
  5.    'ignore_sticky_posts' => 1,
  6.      'post__in' => $sticky,
  7.      'cat' => $cat,
  8.      'posts_per_page' => 4
  9.    );
  10. query_posts($destacado);
  11. while (have_posts()) : the_post(); ?>
  12. <div class="vcard destacado">
  13. <h3 class="fn org" id="post-<?php the_ID(); ?>">
  14. <a href="<?php $values = get_post_custom_values("link-ext"); echo $values[0]; ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3>
  15. <?php the_content(); ?>
  16. </div>
  17. <?php endwhile; endif; ?>
  18.  
  19. <!-- los demás posts de la categoria exceptuando los marcados como fijos -->
  20. <ul id="listado">
  21. <?php
  22.     $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
  23.     $sticky = get_option('sticky_posts');
  24.     $args = array(
  25.       'post__not_in' => $sticky,
  26.       'paged' => $paged,
  27.       'caller_get_posts'=> 1,
  28.       'cat' => $cat,
  29.       'showposts' => 6,
  30.     );
  31. query_posts($args);
  32. while (have_posts()) : the_post(); ?>
  33. <li class="vcard">
  34. <h4 class="fn org" id="post-<?php the_ID(); ?>">
  35. <a href="<?php $values = get_post_custom_values("link-ext"); echo $values[0]; ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h4>
  36. <?php the_content(); ?>
  37. </li>
  38. <?php endwhile; ?>
  39. </ul>
  40. <div class="navigation">
  41. <?php
  42. global $paged;
  43. if ( isset( $_GET['paged'] ) )
  44. $page = abs( (int) $_GET['paged'] );
  45. else
  46. $page = 1;
  47. $start = $offset = ( $page - 1 ) * 20;
  48. $page_links = paginate_links( array(
  49.     'base' => add_query_arg( 'paged', '%#%' ),
  50.     'format' => '',
  51.     'total' => $wp_query->max_num_pages,
  52.     'current' => $page
  53. ));
  54. if ( $page_links )
  55.     echo '<div class="paginacion">' .$page_links. '</div>'; ?>
  56. </div>

Etiquetas: tipo, post
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 18:48.