Código para mostrar post relacionados con problemas de carga

  • Autor Autor Mrbarriga
  • Fecha de inicio Fecha de inicio
M

Mrbarriga

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Saludos, tengo este código para mostrar los últimos post relacionados tomando como referencia el primer tag del post.

PHP:
<?php ?>
<?php
$tags = wp_get_post_tags($post->ID);
if ($tags) {
echo '<div id="relacionado"><strong>Quizas te interese leer también:</strong>';
$first_tag = $tags[0]->term_id;
$args=array(
'tag__in' => array($first_tag),
'post__not_in' => array($post->ID),
'showposts'=>3,
'caller_get_posts'=>1
);
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<p><h4 class="relacionado"><a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h4><?php the_content_rss('', TRUE, '', 22); ?></p>
<?php endwhile; 
}
}
?>

Esto me está generando un error en el archivo query.php de wordpress que si bien no afecta el sitio, afecta la carga de php en el servidor y además me ocasiona problemas con algunos plugin como el de facebook comments.

¿Puede alguien ayudarme a optimizar este código y/ó arreglarlo para que no me de error? Muchas gracias de antemano.
 
Hola, Para Wordpress hay un plug in que lo hace, ademas de tener varias opciones de configuracion. Crea un pequeño enlace con fuente pequeña con creditos en la funcion pero no es molesto.

El plug in es "WP Related Posts" Si no deseas instalar plugins, podrias basar tu funcion en este plugin.

Un saludo
 
WP Related Posts es el plugin que buscas, solo tienes que instalarlo y copiar un codigo que te da donde quieres que salgan las noticias relacionadas.
 
Gracias por sus respuestas amigos, pero la verdad no me gusta tener plugins para mi wordpress, por eso encontré este código. (ya no recuerdo donde) lo que necesito es ayuda para saber que está mal en ese código y optimizarlo, porque funcionó bien para antes de la versión 3.0
 
Prueba con este codigo
PHP:
<h3>
Art&iacute;culos Relacionados
<span> </span>
</h3>
<?php
//Produce una lista de artículos relacionados con las etiquetas del artículo
  $tags = wp_get_post_tags($post->ID);
  $tagIDs = array();
  if ($tags) {
    $tagcount = count($tags);
    for ($i = 0; $i < $tagcount; $i++) {
      $tagIDs[$i] = $tags[$i]->term_id;
    }
	if(get_option('tw_related_posts')){$relposts = get_option('tw_related_posts');}else{$relposts = 5;}
    $args=array( 'tag__in' => $tagIDs, 'post__not_in' => array($post->ID), 'showposts'=>$relposts, 'caller_get_posts'=>1 );
  $my_query = new WP_Query($args);
    if( $my_query->have_posts() ) {?>
    <?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
      <li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><div class="title"><?php the_title(); ?></div></a></li>
       <?php endwhile;?>
    <?php } else { ?>
    No hay art&iacute;culos relacionados
    <?php } wp_reset_query(); } ?>
</li>
</ul><!--/related_articles-->

Esta sacado de un theme de trazos web y sino recuerdo mal si funciona
 
Gente, creo que he dado con el problema: el código correcto sería:
PHP:
<?php
$tags = wp_get_post_tags($post->ID);
$tagIDs = array();
if ($tags) {
echo '<div id="relacionado"><strong>Quizas te interese leer también:</strong>';
$tagcount = count($tags);
for ($i = 0; $i < $tagcount; $i++) {
$tagIDs[$i] = $tags[$i]->term_id;
}
if(get_option('tw_related_posts')){$relposts = get_option('tw_related_posts');}else{$relposts = 3;}
$args=array( 'tag__in' => $tagIDs, 'post__not_in' => array($post->ID), 'showposts'=>$relposts, 'caller_get_posts'=>1 );
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {?>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
<p><h4 class="relacionado"><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h4><?php the_content_rss('', TRUE, '', 22); ?></p>
<?php endwhile;?>
<?php } else { ?>
No hay art&iacute;culos relacionados
<?php } wp_reset_query(); } ?></div>

y Listo, ahí tienes un bonito script de post relacionados que muestra el titulo y una corta descripción del post, sin imagen y sin usar plugin.

Gracias a @Skinet por refrescarme la memoria de donde había sacado el código.
 
Última edición:
y si fuera para categorias?

Gente, creo que he dado con el problema: el código correcto sería:
PHP:
<?php
$tags = wp_get_post_tags($post->ID);
$tagIDs = array();
if ($tags) {
echo '<div id="relacionado"><strong>Quizas te interese leer también:</strong>';
$tagcount = count($tags);
for ($i = 0; $i < $tagcount; $i++) {
$tagIDs[$i] = $tags[$i]->term_id;
}
if(get_option('tw_related_posts')){$relposts = get_option('tw_related_posts');}else{$relposts = 3;}
$args=array( 'tag__in' => $tagIDs, 'post__not_in' => array($post->ID), 'showposts'=>$relposts, 'caller_get_posts'=>1 );
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {?>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
<p><h4 class="relacionado"><a rel="nofollow" href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h4><?php the_content_rss('', TRUE, '', 22); ?></p>
<?php endwhile;?>
<?php } else { ?>
No hay art&iacute;culos relacionados
<?php } wp_reset_query(); } ?></div>

y Listo, ahí tienes un bonito script de post relacionados que muestra el titulo y una corta descripción del post, sin imagen y sin usar plugin.

Gracias a @Skinet por refrescarme la memoria de donde había sacado el código.
 
Atrás
Arriba