A postagem única paginada não redireciona para a URL principal após a remoção da paginação

4

eu usei

<!--nextpage-->

( Codex ) para paginar (dividir) algumas mensagens únicas. Agora eu removi todas as partes do nextpage html das postagens. tudo parece bem. Infelizmente os antigos URLs como

sample.com/tipps-for-me/2

sample.com/tipps-for-me/3

sample.com/tipps-for-me/4

...

não redireciona para o URL principal sample.com/tipps-for-me . Em vez disso, mostra exatamente o mesmo conteúdo (inteiro) do URL principal ( sample.com/tipps-for-me ) quando estou assistindo sample.com/tipps-for-me/2 , sample.com/tipps-for-me/3 , sample.com/tipps-for-me/4 e assim por diante.

Eu não uso nenhuma função de redirecionamento de plug-in ou redirecionamento em lugar algum. Alguma ideia de como corrigir este problema?

    
por NewUser 05.02.2016 / 11:07

1 resposta

4

EDITAR

Eu brinquei com uma possível solução para o seu problema. Nós podemos tentar o seguinte

  • Adicione nossa própria ação a template_redirect , onde fazemos o seguinte

    • Verifique se a solicitação atual é uma página de postagem única paginada e se não temos a tag <!--nextpage--> no conteúdo da postagem.

    • Se tudo der certo em nossa condição, faremos um redirecionamento manual para a primeira página da postagem

Aqui está o código:

add_filter( 'template_redirect', function()
{
    if (    is_single() 
         && false === strpos( get_queried_object()->post_content, '<!--nextpage-->' )
         && get_query_var('page') 
    ) {
        wp_redirect( get_permalink( get_queried_object_id() ) );
        die;
    }
});

NOTAS IMPORTANTES

Isso também redirecionará a atual página de postagem única paginada para a primeira página, mesmo se usarmos o filtro content_pagination . O código leva em consideração apenas a tag <!--nextpage--> , portanto, você precisará garantir que não paginará uma única postagem com nenhum outro método além da tag <!--nextpage-->

END OF EDIT

RESPOSTA ORIGINAL

Tenho certeza de que isso exigirá muita investigação e muito teste, jurando e reescrevendo o código para que isso funcione.

Infelizmente, quando você tem um URL como sample.com/tipps-for-me/4 , o WordPress sempre se lembrou de conhecer o WordPress na versão 3.3.1 e aceitou a estrutura da URL como válida, mesmo quando uma postagem tem apenas uma página. isso não é novidade.

O WordPress 4.4 viu o novo filtro content_pagination sendo adicionado e o seguinte trecho de código para redirect_canonical

$next = '<!--nextpage-->';
if ( $p && false !== strpos( $p->post_content, $next ) && ! empty( $this->query_vars['page'] ) ) {
    $page = trim( $this->query_vars['page'], '/' );
    $success = (int) $page <= ( substr_count( $p->post_content, $next ) + 1 );
}

O que isso faz com sucesso é, se você tiver a tag <!--nextpage--> em uma postagem, todas as páginas após a última página após a tag <!--nextpage--> serão 404 e redirecionadas para a primeira página. Esta é realmente a única vez que você terá sucesso com URLs como sample.com/tipps-for-me/4 quando essa página for uma página após a última página após a tag <!--nextpage--> . Se removermos a tag <!--nextpage--> , ainda assim poderemos inserir qualquer URL sem ser redirecionado como pré WordPress 4.4

Este trecho de código, no entanto, cria outras questões que eu levantei ( um ainda aberto não resolvido ) trac ticket para, e entre mim e @birgire, lidamos com a questão na pergunta a seguir uma semana ou duas atrás

Pedi no tíquete do trac mencionado para remover o código de redirect_canonical() para evitar os novos problemas criados até encontrarmos uma solução sólida para lidar com a paginação em postagens únicas.

Acho que o que realmente torna isso muito difícil agora é o novo filtro content_pagination , pois precisaremos encontrar uma maneira de manipular corretamente as páginas que são adicionadas por meio do filtro com e sem a tag <!--nextpage--> . Outra questão é que, antes do WordPress 4.4, as pessoas usaram o filtro the_post para adicionar uma página adicional a uma única postagem além da tag <!--nextpage--> , o que adiciona ainda mais problemas para lidar de tal forma que não quebremos essas sites que ainda dependem de métodos válidos mais antigos

PARA CONCLUIR

Certamente não haverá uma solução para isso no futuro próximo. Como muitos outros bugs que existem como todas as postagens sendo retornadas por WP_Query em um termo ou taxonomia inválida ou em um envio de pesquisa vazio ou nomes de termos saneantes em um tax_query , realmente não há uma solução concreta para corrigir esses problemas. Minha aposta é que alguns desses problemas nunca serão corrigidos e permanecerão até o final dos dias.

Do ponto de vista SEO, não tem qualquer efeito, por isso não é nada para se preocupar.

    
por Pieter Goosen 05.02.2016 / 12:33