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" />
- .....
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";
- }
- }
- }
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.
¿Con ganas de aprender más? Conóceme y sigue mis perfiles sociales AQUÍ.
También puedes conocer mis servicios:.
Servicios personalizados como Consultor SEO Freelace para profesionales, eCommerce, agencias y PYMES
jlmora
mmedia
mmedia
Claudio
jlmora
Héctor
jlmora
jlmora