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

Mostrar post relacionados (en single.php)

Estas en el tema de Mostrar post relacionados (en single.php) en el foro de WordPress en Foros del Web. Hola a todos, os comento mi duda. Al consultar un post en concreto sobra mucho espacio hasta completar todo el largo de la web que ...
  #1 (permalink)  
Antiguo 16/12/2010, 22:42
Avatar de dropthebass  
Fecha de Ingreso: abril-2008
Mensajes: 27
Antigüedad: 16 años
Puntos: 0
Mostrar post relacionados (en single.php)

Hola a todos, os comento mi duda.

Al consultar un post en concreto sobra mucho espacio hasta completar todo el largo de la web que determina la barra lateral derecha.

Quería saber si existe alguna forma, de una vez mostrado el post consultado, de poder visualizar seguidamente X posts más de la misma categoría por orden cronológico.

De este modo quedaría lleno ese espacio muerto, además de ofrecer más información útil.

Espero que álguien pueda ayudarme, gracias por vuestro tiempo!
  #2 (permalink)  
Antiguo 17/12/2010, 03:39
 
Fecha de Ingreso: febrero-2009
Mensajes: 74
Antigüedad: 15 años, 2 meses
Puntos: 4
Respuesta: Mostrar post relacionados (en single.php)

Cita:
Iniciado por dropthebass Ver Mensaje
Hola a todos, os comento mi duda.

Al consultar un post en concreto sobra mucho espacio hasta completar todo el largo de la web que determina la barra lateral derecha.

Quería saber si existe alguna forma, de una vez mostrado el post consultado, de poder visualizar seguidamente X posts más de la misma categoría por orden cronológico.

De este modo quedaría lleno ese espacio muerto, además de ofrecer más información útil.

Espero que álguien pueda ayudarme, gracias por vuestro tiempo!
Hola..Existen varios plugins que te permiten mostrar post relacionados, el que mas se esta viendo por ahora es http://www.linkwithin.com . Aunque existen otros mejores que necesitan tocar mas el código para que se adapte a lo que quieres.
__________________
Reggae
Travel Spain
  #3 (permalink)  
Antiguo 17/12/2010, 09:53
Avatar de dropthebass  
Fecha de Ingreso: abril-2008
Mensajes: 27
Antigüedad: 16 años
Puntos: 0
Respuesta: Mostrar post relacionados (en single.php)

Gracias! lo acabo de probar y simplemente no me muestra nada, además no da muchas opciones desde panel de Admin.

De todos modos buscaba mostrar más entradas relacionadas de la misma manera que se está mostrando el post actual, he estado mirando plugins pero de momento sin éxito...

Última edición por dropthebass; 17/12/2010 a las 10:02
  #4 (permalink)  
Antiguo 17/12/2010, 12:37
Avatar de xavito  
Fecha de Ingreso: agosto-2003
Mensajes: 61
Antigüedad: 20 años, 7 meses
Puntos: 5
Respuesta: Mostrar post relacionados (en single.php)

Prueba con ese código:

<div id="bloc1">
<h3>Posts relacionados</h3>

<?php

$categories = get_the_category(get_the_ID() );

if ($categories) {
$category_ids = array();
foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;

$args=array(
'category__in' => $category_ids,
'post__not_in' => array(get_the_ID()),
'showposts'=>5, // Number of related posts that will be shown.
'caller_get_posts'=>1
);

$my_query = new wp_query($args);

if( $my_query->have_posts() ) {
echo '<ul>';
while ($my_query->have_posts()) {
$my_query->the_post();
?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php
}
echo '</ul>';
}
}
wp_reset_query();
?>
</div>


Lo tienes que poner dentro del loop
  #5 (permalink)  
Antiguo 17/12/2010, 12:51
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Respuesta: Mostrar post relacionados (en single.php)

Yo uso este código, lo pegas en tu archivo functions.php:
Código PHP:
Ver original
  1. <?php
  2. /* Post Relacionados **********************************************************/
  3. function crossblock_get_related_posts() {
  4.     global $wpdb, $post,$table_prefix;
  5.  
  6.     if ( $exclude != '' ) {
  7.         $q = "SELECT tt.term_id FROM ". $table_prefix ."term_taxonomy tt, " . $table_prefix . "term_relationships tr WHERE tt.taxonomy = 'category' AND tt.term_taxonomy_id = tr.term_taxonomy_id AND tr.object_id = $post->ID";
  8.  
  9.         $cats = $wpdb->get_results($q);
  10.  
  11.         foreach(($cats) as $cat) {
  12.             if (in_array($cat->term_id, $exclude) != false){
  13.                 return;
  14.             }
  15.         }
  16.     }
  17.  
  18.     if(!$post->ID){return;}
  19.     $now = current_time('mysql', 1);
  20.     $tags = wp_get_post_tags($post->ID);
  21.  
  22.     $taglist = "'" . $tags[0]->term_id. "'";
  23.  
  24.     $tagcount = count($tags);
  25.     if ($tagcount > 1) {
  26.         for ($i = 1; $i <= $tagcount; $i++) {
  27.             $taglist = $taglist . ", '" . $tags[$i]->term_id . "'";
  28.         }
  29.     }
  30.  
  31.     if ($limit) {
  32.         $limitclause = "LIMIT $limit";
  33.     }    else {
  34.         $limitclause = "LIMIT 9"; // Éste valor es la cantidad de post a mostrar
  35.     }
  36.  
  37.     $q = "SELECT p.ID, p.post_title, p.post_date, p.comment_count, count(t_r.object_id) as cnt FROM $wpdb->term_taxonomy t_t, $wpdb->term_relationships t_r, $wpdb->posts p WHERE t_t.taxonomy ='post_tag' AND t_t.term_taxonomy_id = t_r.term_taxonomy_id AND t_r.object_id  = p.ID AND (t_t.term_id IN ($taglist)) AND p.ID != $post->ID AND p.post_status = 'publish' AND p.post_date_gmt < '$now' GROUP BY t_r.object_id ORDER BY cnt DESC, p.post_date_gmt DESC $limitclause;";
  38.  
  39.     $related_posts = $wpdb->get_results($q);
  40.     $output = "";
  41.  
  42.     if (!$related_posts){
  43.         return;
  44.     }
  45.  
  46.     foreach ($related_posts as $related_post ){
  47.         $output .= '<li><h3>';
  48.  
  49.         /*
  50.         $show_date = true;
  51.         if ($show_date){
  52.             $dateformat = get_option('date_format');
  53.             $output .= '<span class="date">'.mysql2date($dateformat, $related_post->post_date) . "</span> &nbsp;-&nbsp; ";
  54.         }
  55.         */
  56.  
  57.         $output .=  '<a href="'.get_permalink($related_post->ID).'" title="'.wptexturize($related_post->post_title).'">'.wptexturize($related_post->post_title).'';
  58.  
  59.         if ($show_comments_count){
  60.             $output .=  " (" . $related_post->comment_count . ")";
  61.         }
  62.  
  63.         $output .=  '</h3></a></li>';
  64.     }
  65.     $output = '<ul>'.$output.'</ul>';
  66.     $output = '<h3>Posts relacionados:</h3>'.$output;
  67.  // end $crossblock_postthumbnail_disable
  68.  
  69.     return $output;
  70. }
  71. ?>
Y en single.php solo tienes que llamar la función donde quieras que se muestren esos post relacionados.
Código PHP:
Ver original
  1. <div id="related-post">
  2.     <?php echo crossblock_get_related_posts(); ?>
  3. </div>

Saludos...
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #6 (permalink)  
Antiguo 19/12/2010, 21:05
Avatar de dropthebass  
Fecha de Ingreso: abril-2008
Mensajes: 27
Antigüedad: 16 años
Puntos: 0
Respuesta: Mostrar post relacionados (en single.php)

Muchas gracias por los códigos, finalmente he utilizado el de xavito y lo he modificado a mi gusto, ya que este código muestra los títulos de los post relacionados.

Como yo quería mostrar los post enteros, y no sólo los títulos, he cambiado las lineas en que se mostraban dichos títulos por el código comprendido entre las marcas <!--Single Post--> y <!--Post End--> del single.php.

Ahora ya ha quedado como quería, gracias ;)

Etiquetas: post, relacionados
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 12:07.