Haga que Google indexe toda la publicación si está separada en varias páginas

8

Si bien esta es una pregunta, también es una advertencia seria para los editores que separan sus publicaciones usando <!--nextpage-->.

Desnudo conmigo Ejecuto una plataforma de múltiples autores altamente tratada que ocupa un lugar muy alto en los motores de búsqueda. Al realizar mejoras relacionadas con SEO, noté que Google solo indexa la primera página de un artículo que está separada en varias páginas. ¿Cómo me di cuenta de esto?

Porque alguien agarró el contenido de las páginas no indexadas de un artículo y lo publicó en su propio sitio. Esto los llevó a tener una clasificación más alta que yo en esa palabra clave en particular. En realidad, permítanme reformular que el artículo de mi sitio ni siquiera está indexado más allá de la primera página.

Mi pregunta es, ¿cómo puedo hacer que los motores de búsqueda indexen todo el artículo si está separado en varias páginas? Idealmente, un script que muestra el artículo completo si el visitante es un motor de búsqueda (si eso no sería perjudicial para el SEO). Otras sugerencias son bienvenidas.

En una nota al margen, si me interesaran las técnicas de Black Hat, habría una mina de oro de contenido que podría explotar. Piensa en eso.

Y en una nota personal, este problema debería abordarse en una futura actualización de Wordpress.

Actualización : Aquí se hizo una pregunta similar que detallaba cómo Wordpress crea la misma URL canónica para todas las páginas en una secuencia paginada , sin embargo, la respuesta que fue publicada y marcada como correcta no responde la pregunta. Esa solución funciona solo para comentarios paginados, no para publicaciones paginadas.

Actualización 2 : Según esta publicación de blog de Google, podemos usar rel=”next”e rel=”prev”indicar la relación entre páginas. Así, por ejemplo, esto es lo que hay que incluir en <head>el página 2 :

<link rel="canonical" href="http://domain.com/article/2" />
<link rel="prev" href="http://domain.com/article/1" />
<link rel="next" href="http://domain.com/article/3" />

Y no debería haber un rel = "prev" o "next" si no hay una página después / antes.

Christine Cooper
fuente
Parece que has encontrado la respuesta. ¿Te importaría formatearlo como tal y aceptarlo? Creo que mucha gente se beneficiará de esto.
Tomas Buteler
@tbuteler Si bien encontré la solución que consiste en agregar una URL canónica única en cada página paginada e incluirla link rel="prev"/"next"siempre que sea necesario, no tengo un script escrito. Sin embargo, Toscho mencionó en el chat que puede tener algo. Mire este espacio para actualizaciones ...
Christine Cooper
He actualizado el código en mi respuesta sobre la pregunta a la que se refirió. Lo he probado y resuelve tu problema. ¡Buen trabajo para encontrar esta falla!
shea

Respuestas:

2

El problema básico para una solución de script es: rel_canonicalno ofrece ningún filtro útil. Entonces tenemos que reemplazar esa función:

remove_action( 'wp_head', 'rel_canonical' );
add_action( 'wp_head', 't5_canonical_subpages' );

El siguiente problema: $GLOBALS['numpages']está vacío antes setup_postdata(). Podríamos llamar a esa función ya aquí, pero podría tener efectos secundarios.

Aquí hay una solución que agrega enlaces prev / next correctos también, y evita relaciones conflictivas causadas por adjacent_posts_rel_link_wp_head. Tenemos demasiado enganche a wp_headmás tardar en la prioridad 9 para desactivar el último enganche.

remove_action( 'wp_head', 'rel_canonical' );
add_action(    'wp_head', 't5_canonical_subpages', 9 );

/**
 * Extend version of the native function rel_canonical()
 *
 * @wp-hook wp_head
 * @return  void
 */
function t5_canonical_subpages()
{
    if ( ! is_singular() )
        return;

    if ( ! $id = $GLOBALS['wp_the_query']->get_queried_object_id() )
        return;

    $post = get_post( $id );
    setup_postdata( $post );

    # let WordPress do all the work
    if ( empty ( $GLOBALS['page'] ) )
        return rel_canonical();

    $permalink = get_permalink( $id );
    $canonical = t5_page_permalink( $permalink, $GLOBALS['page'] );
    echo "<link rel='canonical' href='$canonical' />";

    # next and prev links
    if ( 1 < $GLOBALS['page'] )
    {
        $prev = t5_page_permalink( $permalink, $GLOBALS['page'] - 1 );
        print "<link rel='prev' href='$prev' />";
    }

    if ( isset ( $GLOBALS['numpages'] ) && $GLOBALS['page'] < $GLOBALS['numpages'] )
    {
        $next = t5_page_permalink( $permalink, $GLOBALS['page'] + 1 );
        print "<link rel='next' href='$next' />";
    }

    # avoid conflicting pev/next links
    remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head' );
}

/**
 * Helper to get correct permalinks for sub-pages.
 *
 * @param  string $permalink
 * @param  int    $page
 * @return string
 */
function t5_page_permalink( $permalink, $page )
{
    if ( 1 == $page )
        return $permalink;

    # no pretty permalinks
    if ( '' === get_option( 'permalink_structure' ) )
        return add_query_arg( 'page', $page, $permalink );

    return $permalink . user_trailingslashit( $page, 'single_paged' );
}
fuxia
fuente
Muchas gracias por el guion. ¿Tiene tiempo para agregar la link rel="prev"/rel="next"función como se indica en Update 2mi pregunta?
Christine Cooper
Eso requeriría un setup_postdata()... algo que debería suceder mucho más tarde durante la representación de la página.
fuxia
¿Debo abrir una pregunta por separado a pesar de que se requiere el 'enlace rel' para resolver este problema de indexación?
Christine Cooper
@ChristineCooper He agregado eso ahora. No estoy seguro de qué efectos secundarios podría causar.
fuxia
1
Lo dejé un rato para probar y ver cómo Google indexa las publicaciones ahora y estoy feliz de confirmar que este script funciona perfectamente. ¡Bien hecho!
Christine Cooper
0

Solo para su información: el plugin SEO de WordPress de Yoast se encarga de agregar rel = prev y rel = next metadatos a las <head>páginas. ¡Ese tipo (Yoast) piensa en todo!

Miriam Schwab
fuente
1
-1 Soy consciente de esto, pero no estoy dispuesto a instalar un plugin de SEO masivo solo para una parte menor de sus características, tampoco debería hacerlo a menos que esté usando todo lo que viene con él.
Christine Cooper