¿Cómo mostrar post relacionados de manera aleatoria en WordPress?

  • Autor Autor diecreative
  • Fecha de inicio Fecha de inicio
diecreative

diecreative

Eta
Diseñador
Verificación en dos pasos activada
Verificado por Whatsapp
Hola betas, no supe bien como colocar el titulo, pero el caso es el siguiente, tengo un template en wordpress que tiene este php el cual muestra los post relacionados (Por tags) Pero solo muestra como los últimos post de dicho tag. Osea que siempre se ven los mismos en la parte de abajo.

Como puedo lograr para que cargue de manera aleatoria (random)... De tal manera que pueda estar mostrando todos los post y no los ultimos.

Dejo el codigo si por casualidad alguien me puede colaborar


PHP:
	<?php // RELATED BLOG POSTS (by Tags) ?>

	<?php
	$related_postperpage = get_option('of_related_postperpage');
	$orig_post = $post;
	global $post;
	$postnum = 0;
	
	$tags = wp_get_post_tags($post->ID);

	if ($tags) {
		$tag_ids = array();
			foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
			$args = array(
				'tag__in' => $tag_ids,
				'post__not_in' => array($post->ID),
				'posts_per_page' => $related_postperpage, // Number of related posts that will be shown.
				'ignore_sticky_posts' => 1
			);

		$my_query = new wp_query( $args );
			if( $my_query->have_posts() ) {

			echo '<div id="related-posts">
					<h3 class="section_title">You may also like</h3>
					<ul class="related-list">';

				while( $my_query->have_posts() ) {
					$my_query->the_post();
					$postnum++;
	?>
    

					<li class="post-<?php echo $postnum; ?> item">
                    
						<?php if ( has_post_thumbnail() ) { ?>
						<div class="related-thumb">
							<a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>">
								<span class="overlay" style="opacity:0"></span>
								<?php the_post_thumbnail(); ?>
							</a>
						</div>
						<?php } else { ?>
						<a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><img src="<?php echo get_template_directory_uri(); ?>/images/post-thumb.jpg" alt="<?php the_title(); ?>" /></a>
						<?php } ?>
					
						<div class="related-content">
							<h3 class="related-item-title"><a href="<?php the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>">
								<?php
								$thetitle = $post->post_title; /* or you can use get_the_title() */
								$getlength = strlen($thetitle);
								$thelength = 20;
								echo substr($thetitle, 0, $thelength);
								if ($getlength > $thelength) echo "...";
								?>
								</a>
							</h3>
						</div>
						
					</li>
					
		<?php }
			echo '</ul></div>';
		}
	}
				
	$post = $orig_post;
	wp_reset_query();
?>
 
Necesitas mostrar los thumbnails?

Te puedo pasar uno que muestre los títulos y de ahí lo modifícas.

Avísame

Hola betas, no supe bien como colocar el titulo, pero el caso es el siguiente, tengo un template en wordpress que tiene este php el cual muestra los post relacionados (Por tags) Pero solo muestra como los últimos post de dicho tag. Osea que siempre se ven los mismos en la parte de abajo.

Como puedo lograr para que cargue de manera aleatoria (random)... De tal manera que pueda estar mostrando todos los post y no los ultimos.

Dejo el codigo si por casualidad alguien me puede colaborar


PHP:
    <?php // RELATED BLOG POSTS (by Tags) ?>

    <?php
    $related_postperpage = get_option('of_related_postperpage');
    $orig_post = $post;
    global $post;
    $postnum = 0;
    
    $tags = wp_get_post_tags($post->ID);

    if ($tags) {
        $tag_ids = array();
            foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
            $args = array(
                'tag__in' => $tag_ids,
                'post__not_in' => array($post->ID),
                'posts_per_page' => $related_postperpage, // Number of related posts that will be shown.
                'ignore_sticky_posts' => 1
            );

        $my_query = new wp_query( $args );
            if( $my_query->have_posts() ) {

            echo '<div id="related-posts">
                    <h3 class="section_title">You may also like</h3>
                    <ul class="related-list">';

                while( $my_query->have_posts() ) {
                    $my_query->the_post();
                    $postnum++;
    ?>
    

                    <li class="post-<?php echo $postnum; ?> item">
                    
                        <?php if ( has_post_thumbnail() ) { ?>
                        <div class="related-thumb">
                            <a rel="nofollow" href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>">
                                <span class="overlay" style="opacity:0"></span>
                                <?php the_post_thumbnail(); ?>
                            </a>
                        </div>
                        <?php } else { ?>
                        <a rel="nofollow" href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><img src="<?php echo get_template_directory_uri(); ?>/images/post-thumb.jpg" alt="<?php the_title(); ?>" /></a>
                        <?php } ?>
                    
                        <div class="related-content">
                            <h3 class="related-item-title"><a rel="nofollow" href="<?php the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>">
                                <?php
                                $thetitle = $post->post_title; /* or you can use get_the_title() */
                                $getlength = strlen($thetitle);
                                $thelength = 20;
                                echo substr($thetitle, 0, $thelength);
                                if ($getlength > $thelength) echo "...";
                                ?>
                                </a>
                            </h3>
                        </div>
                        
                    </li>
                    
        <?php }
            echo '</ul></div>';
        }
    }
                
    $post = $orig_post;
    wp_reset_query();
?>
 
Hola amigos, este codigo en que archivo del wp lo colocais?

gracias
 
Gracias por tu respuesta, lo unico que necesito es que los post relacionados se muestren de manera ramdom. En este momento cargan los relacionados pero solo los ultimos 5 post, siempre se ven los mismos, lo que me gustaría es que cargara de manera aleatoria que mostrara desde el mas viejo hasta el mas nuevo post.

Es nada mas eso, gracias
Necesitas mostrar los thumbnails?

Te puedo pasar uno que muestre los títulos y de ahí lo modifícas.

Avísame

- - - Actualizado - - -

Hola amigos, este codigo en que archivo del wp lo colocais?

gracias

Pues es un solo archivo php, quee se llama related-blog-post.php
 
Si, te entiendo pero tendra que ser llamado desde algun archivo del wp (tal vez el header, sidebar, .... ?



Gracias por tu respuesta, lo unico que necesito es que los post relacionados se muestren de manera ramdom. En este momento cargan los relacionados pero solo los ultimos 5 post, siempre se ven los mismos, lo que me gustaría es que cargara de manera aleatoria que mostrara desde el mas viejo hasta el mas nuevo post.

Es nada mas eso, gracias


- - - Actualizado - - -



Pues es un solo archivo php, quee se llama related-blog-post.php
 
Saludos

Te diría que quites el código de tu theme y uses el plug nrelate es el mejor en mi opinión, ya que este indexa hasta el contenido lo que mejora la calidad de los post relacionados, tambien cuenta con muchas opciones y la que mas me gusta puedes definir hasta cuanto tiempo atrás puede usar los post, en mi caso es muy bueno ya que mi blog tiene varios años
 
Usa este código y colócalo donde necesites:

HTML:
<?php query_posts(array('orderby' => 'rand', 'showposts' => 15)); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<h2><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h2>
<?php endwhile; ?><?php endif; ?>


Gracias por tu respuesta, lo unico que necesito es que los post relacionados se muestren de manera ramdom. En este momento cargan los relacionados pero solo los ultimos 5 post, siempre se ven los mismos, lo que me gustaría es que cargara de manera aleatoria que mostrara desde el mas viejo hasta el mas nuevo post.

Es nada mas eso, gracias


- - - Actualizado - - -



Pues es un solo archivo php, quee se llama related-blog-post.php
 
Si, te entiendo pero tendra que ser llamado desde algun archivo del wp (tal vez el header, sidebar, .... ?

Hasta donde veo, es una variable que esta en el archivo donde carga el post. Ahi aparece dicha función que llama ese php

- - - Actualizado - - -

Saludos

Te diría que quites el código de tu theme y uses el plug nrelate es el mejor en mi opinión, ya que este indexa hasta el contenido lo que mejora la calidad de los post relacionados, tambien cuenta con muchas opciones y la que mas me gusta puedes definir hasta cuanto tiempo atrás puede usar los post, en mi caso es muy bueno ya que mi blog tiene varios años

Soy como algo malo para tantos plugins :S jaja, creo que soy algo rigido con el tiempo de carga y las peticiones, pero ensayare a ver que tal

- - - Actualizado - - -

Usa este código y colócalo donde necesites:

HTML:
<?php query_posts(array('orderby' => 'rand', 'showposts' => 15)); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<h2><a rel="nofollow" href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h2>
<?php endwhile; ?><?php endif; ?>

Lo puedo anexar ahi mismo al php? En alguna linea en especial o reemplazando algo? Gracias
 
Soy como algo malo para tantos plugins :S jaja, creo que soy algo rigido con el tiempo de carga y las peticiones, pero ensayare a ver que tal


Ten por seguro que este plug no alenta tu pag yo tengo mi blog con 9mil entradas y he usado muchos plug de post relacionados, este lo que hace es que indexa todas tus entradas a su sitio y luego este genera cuales entradas deben ir como relacionadas , lo que no te consume consultas a mysql

Al activar el plug debes esperar unos 15 min para ver las miniaturas
 
Atrás
Arriba