Paginación con rel=»next» y rel=»prev» en WordPress
Recientemente han publicado en el blog de Google Webmasters Central un artículo donde detallan una manera para marcar la páginación usando las cabeceras HTML o ¿como poner una funcion previous/next en WordPress para implementar paginación?.
El método es sencillo, en las páginas que nos interesen deberemos colocar la etiqueta «link» acompañada del atributo «rel» con el valor apropiado: next o prev. De esta forma podremos crear una paginación SEO amigable para Google.
Veamos un ejemplo suponiendo que nuestro home ocupa 3 páginas y estamos en la página 2:
<head>
……
<link rel=»prev» href=»http://www.misitio.com/page/1″ />
<link rel=»next» href=»http://www.misitio.com/page/3″ />
…..
[/php]
Lógicamente cuando estemos en la primera página no deberá aparecer el link previo y cuando estemos en la última no aparecerá el link siguiente.
También nos dicen que el valor «next» puede ser reemplazado por «previous» y que esto no interfiere para nada con el funcionamiento de los enlaces canónicos.
[-] Indice de contenidos |
---|
Implementar rel=»next/prev» en cabeceras WordPress
Los consejos mostrado en el artículo de son sencillos de aplicar cuando estamos trabajando con páginas de forma manual, pero si queremos aplicarlo a un CMS, como por ejemplo WordPress, nos va a costar un poquito más. Seguramente en breve aparecerá algún plugin que lo haga (si acaso no existe ya). Pero yo he decidido aprovechar una función que utilizo para hacer las paginaciones en home, etiquetas y categorías.
Paginación SEO en WordPress
Voy a dejar aquí la función «paginador»que he implementado para crear paginación a nivel SEO, en la cabecera HTML con rel=»next» y rel=»prev» en WordPress.
Soy consciente de que el método es algo complicado y podría hacerse de forma más sencilla.
/*
Está función obtine una paginación completa si estamos en el home,
en una categoría o en una etiqueta.
Posteriormente separa las urls anterior y siguiente a la página en curso,
para insertarlos en la cabecera html dentro de una etiqueta «link» con
el correspondiente atributo rel=prev/next.
*/
function next_prev(){
global $wp_query;
$valor_alto = 999999999;
$paginacion_completa=paginate_links(
array(
‘base’ => str_replace( $valor_alto, ‘%#%’, get_pagenum_link( $valor_alto ) ),
‘format’ => ‘?paged=%#%’,
‘current’ => max( 1, get_query_var(‘paged’) ),
‘total’ =>$wp_query->max_num_pages)
);
$array_paginacion=explode(«</a>»,$paginacion);
foreach ($array_paginacion as $enlace)
{
if (strrpos($enlace,»Siguiente»))
{
preg_match(‘(http://»?.*»)’,$enlace,$matches,PREG_OFFSET_CAPTURE,3);
$siguiente=explode(‘»‘,$matches[0][0]);
echo «<link rel=\»next\» href=\»».$siguiente[0].»\»/>\n»;
}
if (strrpos($enlace,»Anterior»))
{
preg_match(‘(http://»?.*»)’,$enlace,$matches,PREG_OFFSET_CAPTURE,3);
$anterior=explode(‘»‘,$matches[0][0]);
echo «<link rel=\»prev\» href=\»».$anterior[0].»\»/>\n»;
}
}
}
[/php]
Me encantaría ver otras implementaciones más sencillas. Se pueden usar los comentarios para publicar otros métodos pero no creo que el código PHP quede bien.
No dudéis en enviarme un mail para participar y pondré vuestros códigos bien formateados.
En mi instalación tengo el fichero wp-includes/link-template.php, no encuentro el que citas pero creo que es similar.
Si incluimos la modificación en el citado fichero con una función como la que propongo, la solución sería bastante buena en comparación a implementarlo directamente en el header.php ya que no se pierden los cambios al cambiar de tema.
Muchas gracias por participar
¿Y añadiéndolo a mano en el archivo wp-includes/template-functions-links.php de WP?
He intentado encontrar alguna función que lo hiciera pero sin éxito de momento. De todas maneras a mi me interesa que los rel=»next» & rel=»prev» los incluya sólo en los enlaces de las paginaciones. La precarga del head tiene sus inconvenientes y no me termina de convencer…
Nota: el plugin SEO de yoast.com si que incluye lo que tu comentas.
Sevirá realmente? para implementarlo en mi web tengo que reestructurar medio sitio jeje.
Amigo te puedo decir que aquí lo tengo puesto y sinceramente no he notado mejoría de tráfico, pero también es verdad que no tenía problemas importantes de paginación.
Buenas Juan, muy interesante tu post, sin duda nos viene genial cuando trabajemos con wordpress y…. ¿Cómo se haría para un prestashop? Me encantaría poder implementarlo porque me está trayendo de cabeza el tema.
Muchas gracias y buen día.
Héctor
Hace tiempo que Google indico que no la tendría en cuenta creo que ya no interesa complicarse con este marcado.
Cierto, pero también hace bastante tiempo que escribí este post :)