Código para mostrar posts relacionados com problemas de carregamento

  • Autor Autor Mrbarriga
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
M

Mrbarriga

Beta
Usuário com poucas negociações! Use sempre o saldo do 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.
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
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 edição:
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.
 
Voltar
Topo