Faça com que o Google indexe a postagem inteira se ela estiver separada em várias páginas

8

Embora essa seja uma pergunta, também é um aviso sério para os editores que separam suas postagens <!--nextpage-->.

Desnuda comigo. Eu administro uma plataforma de múltiplos autores altamente trafegada e com uma classificação muito alta nos mecanismos de pesquisa. Ao fazer melhorias relacionadas ao SEO, notei que apenas a primeira página de um artigo separada em várias páginas está sendo indexada pelo Google. Como eu percebi isso?

Porque alguém pegou o conteúdo das páginas não indexadas de um artigo e o postou em seu próprio site. Isso resultou em uma classificação maior do que eu nessa palavra-chave específica. Na verdade, deixe-me reformular isso, o artigo do meu site nem é indexado além da primeira página.

Minha pergunta é: como posso fazer com que os mecanismos de pesquisa indexem o artigo inteiro se ele estiver separado em várias páginas? Idealmente, um script que exibe o artigo completo se o visitante for um mecanismo de pesquisa (se isso não for prejudicial para o SEO). Outras sugestões são bem vindas.

Em uma nota lateral, se eu usasse as técnicas do Black Hat, haveria uma mina de ouro de conteúdo por aí que eu poderia explorar. Pense nisso.

E, em uma nota pessoal, esse problema deve ser tratado em uma atualização futura do Wordpress.

Atualização : Uma pergunta semelhante que detalhava como o Wordpress cria o mesmo URL canônico para todas as páginas em uma sequência paginada foi feita aqui ; no entanto, a resposta que foi postada e marcada como correta não responde à pergunta. Essa solução funciona apenas para comentários paginados, não para postagens paginadas.

Atualização 2 : de acordo com esta postagem do blog do Google, podemos usar rel=”next”e rel=”prev”indicar a relação entre as páginas. Assim, por exemplo, isso é o que devemos incluir em <head>na 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" />

E não deve haver um rel = "prev" ou "next" se não houver uma página depois / antes dela.

Christine Cooper
fonte
Parece que você encontrou a resposta. Gostaria de formatá-lo como tal e aceitá-lo? Eu acho que muitas pessoas se beneficiarão com isso.
Tomas Buteler
@tbuteler Embora eu tenha encontrado a solução que é adicionar um URL canônico exclusivo em cada página paginada e incluir o link rel="prev"/"next"sempre que necessário, não tenho um script para isso. No entanto, toscho mencionou no bate-papo que ele pode ter alguma coisa. Assista a este espaço para atualizações ...
Christine Cooper
Atualizei o código na minha resposta sobre a pergunta a que você se referiu. Eu testei e resolve o seu problema. Bom trabalho para descobrir essa falha!
shea

Respostas:

2

O problema básico de uma solução de script é: rel_canonicalnão oferece nenhum filtro útil. Então, temos que substituir essa função:

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

O próximo problema: $GLOBALS['numpages']está vazio antes setup_postdata(). Poderíamos chamar essa função já aqui, mas pode ter efeitos colaterais.

Aqui está uma solução que adiciona links corretos anteriores / próximos também e evita relações conflitantes causadas por adjacent_posts_rel_link_wp_head. Também temos um gancho para wp_heada prioridade 9, o mais tardar, para desativar o último gancho.

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
fonte
Muito obrigado pelo script. Você tem tempo para adicionar o link rel="prev"/rel="next"recurso, conforme observado na Update 2minha pergunta.
Christine Cooper
Isso exigiria setup_postdata()algo que deveria acontecer muito mais tarde durante a renderização da página.
fuxia
Devo abrir uma pergunta separada para ele, mesmo que o 'link rel' seja necessário para que esse problema de indexação seja resolvido?
Christine Cooper
@ChristineCooper Adicionei isso agora. Não tenho certeza de que efeitos colaterais isso pode causar.
fuxia
1
Deixei um tempo para testar e ver como o Google indexa as postagens agora e fico feliz em confirmar que esse script funciona perfeitamente. Bem feito!
Christine Cooper
0

Apenas para sua informação, o plugin SEO do Yoast para WordPress cuida da adição de metadados rel = prev e rel = next às <head>páginas das páginas. Aquele cara (Yoast) pensa em tudo!

Miriam Schwab
fonte
1
-1 Estou ciente disso, mas não estou disposto a instalar um enorme plugin de SEO apenas para uma parte menor de seus recursos, nem você, a menos que esteja usando tudo o que vem.
Christine Cooper