Paginación con rel=»next» y rel=»prev» en WordPress

Paginación con link rel="next/prev"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:

[php]
<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
  • 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.

    [php]
    /*
    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.


    SEO Freelance


    8 comentarios en “Paginación con rel=»next» y rel=»prev» en WordPress

    1. 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

    2. 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.

    3. 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.

    4. 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

    5. Hace tiempo que Google indico que no la tendría en cuenta creo que ya no interesa complicarse con este marcado.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.