Este sencillo tutorial es el que he usado para añadir al final de cada artículo que publico una caja con los posts relacionados en función de las etiquetas que se utilizan en el propio artículo.
Por otro lado si quieres añadirlo sin tener que escribir una línea de código, recomiendo usar el plugin YARP (Yet Another Related Post).
Bueno, vamos allá con la inserción del código necesario para añadir los artículos recientes en las entradas de nuestro blog.
1. En primer lugar añadiremos el siguiente código en el archivo functions.php de nuestro theme de wordpress. Fijaos que en la línea 5 del código se muestra el número de artículos relacionados a mostrar. Podemos cambiar este valor para mostra más o menos entradas.
//related post shortcode
function related_posts_shortcode( $atts ) {
extract(shortcode_atts(array(
'limit' => '5',
), $atts));
global $wpdb, $post, $table_prefix;
if ($post->ID) {
$retval = '
<ul>';
// Get tags
$tags = wp_get_post_tags($post->ID);
$tagsarray = array();
foreach ($tags as $tag) {
$tagsarray[] = $tag->term_id;
}
$tagslist = implode(',', $tagsarray);
// Do the query
$q = "
SELECT p.*, count(tr.object_id) as count
FROM $wpdb->term_taxonomy AS tt, $wpdb->term_relationships AS tr, $wpdb->posts AS p
WHERE tt.taxonomy ='post_tag'
AND tt.term_taxonomy_id = tr.term_taxonomy_id
AND tr.object_id = p.ID
AND tt.term_id IN ($tagslist)
AND p.ID != $post->ID
AND p.post_status = 'publish'
AND p.post_date_gmt < NOW() GROUP BY tr.object_id ORDER BY count DESC, p.post_date_gmt DESC LIMIT $limit;"; $related = $wpdb->get_results($q);
if ( $related ) {
foreach($related as $r) {
$retval .= '
<li><a title="'.wptexturize($r->post_title).'" href="'.get_permalink($r->ID).'">'.wptexturize($r->post_title).'</a></li>
';
}
} else {
$retval .= '
<li>No related posts found</li>
';
}
$retval .= '</ul>
';
return $retval;
}
return;
}
add_shortcode('related_posts', 'related_posts_shortcode');
2. Abrimos el archivo single.php de nuestro theme e insertamos el código siguiente donde queramos que aparezcan los artículos relacionados:
<div id="relpost">Artículos relacionados:
<?php echo do_shortcode('');?>
</div>
IMPORTANTE: Entre las comillas de la función do_shortcode escribiremos entre corechetes (“[]“) related_posts, para que muestre los artículos relacionados.
3. Una vez hecho esto podemos dar estilo al div editando el archivo style.css de nuestro theme. Os dejo como ejemplo los estilos css que he utilizado en este blog:
#relpost {
background: #dae3e3;
padding:10px 15px 10px 15px;
font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;
font-size:16px;
color:#15156b;
border-top: 1px solid #15156b;
border-bottom: 1px solid #15156b;
margin:15px;
}
#relpost ul {
margin:0;
padding-top:5px;
padding-left:12px;
}
#relpost ul li{
list-style: none;
background-image: url(images/pointer.jpg);
background-repeat: no-repeat;
background-position:0px 6px;
padding-left:12px;
}
#relpost ul li a, ul li a:link, ul li a:visited {
font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;
font-size:75%;
color: #15156b;
text-decoration:none;
}
#relpost ul li a:hover {text-decoration:underline;}
Hola Emilio:
me parece interesante, ya que tener enlaces internos dentro de nuestro blog es importante de cara al posicionamiento.
De todas formas me quedo con el plugin ya que pienso que si lo puede hacer una máquina, ¿porqué perder tiempo?
Un saludo