Atualização 2016-01-21
Todos os testes atuais do meu lado estão sendo feitos em novas instalações da 4.4.1 com as seguintes configurações:
Plain permalinks
Twentysixteen Theme
No plugins activated
Se a postagem tiver apenas 1 página (ou seja <!--nextpage-->
, não aparecer na postagem), as páginas extras serão anexadas com êxito (mesmo se você anexar várias páginas extras¹).
Welcome to WordPress. This is your first post. Edit or delete it, then start writing!
Se a postagem tiver mais de 2 páginas , as páginas extras 404 e o redirecionamento canônico para a página 1 da postagem.
Welcome to WordPress. This is your first post. Edit or delete it, then start writing!
<!--nextpage-->
This is page 2
No segundo caso, $wp_query->queried_object
está vazio quando você acessa as páginas extras. Você precisará desativar o redirecionamento canônico para ver issoremove_filter('template_redirect', 'redirect_canonical');
As duas correções principais a seguir foram tentadas, separadamente e em conjunto, sem alterações no comportamento: https://core.trac.wordpress.org/ticket/35344#comment:16
https://core.trac.wordpress.org/ticket/35344#comment:34
Para facilitar o uso, este é o código com o qual estou testando atualmente:
add_action('template_redirect', 'custom_content_one');
function custom_content_one() {
global $post;
$content = "\n<!--nextpage-->\nThis is the extra page v1";
$post->post_content .= $content;
}
add_filter('content_pagination', 'custom_content_two', 10, 2);
function custom_content_two($pages, $post) {
if ( in_the_loop() && 'post' === $post->post_type ) {
$content = "This is the extra page v2";
$pages[] = $content;
}
return $pages;
}
add_action('the_post', 'custom_content_three');
function custom_content_three() {
global $multipage, $numpages, $pages;
$content = "This is the extra page v3";
$multipage = 1;
$numpages++;
$pages[] = $content;
}
¹Este é o código que usei para testar várias páginas extras em uma única página
add_action('template_redirect', 'custom_content_one');
function custom_content_one() {
global $post;
$content = "\n<!--nextpage-->\nThis is the extra page v1-1\n<!--nextpage-->\nThis is the extra page v1-2\n<!--nextpage-->\nThis is the extra page v1-3";
$post->post_content .= $content;
}
Pergunta original
Antes da 4.4, eu era capaz de anexar uma página adicional a uma postagem de mutlipage com o seguinte:
add_action('template_redirect', 'custom_content');
function custom_content() {
global $post;
$content = html_entity_decode(stripslashes(get_option('custom_content')));
$post->post_content .= $content;
}
Com get_option ('custom_content') sendo algo como:
<!--nextpage-->
Hello World
Desde a atualização para 4.4, o código não funcionou; navegar para a página adicional aciona um erro 404 e redirect_canonical os envia de volta ao link permanente da postagem. Desativar redirect_canonical permite visualizar a página extra e o conteúdo adicional está lá, mas ainda aciona um erro 404.
Eu tentei várias soluções alternativas, nenhuma das quais resolve o erro 404, incluindo:
add_action('the_post', 'custom_content');
function custom_content() {
global $multipage, $numpages, $pages;
$content = html_entity_decode(stripslashes(get_option('custom_content')));
$multipage = 1; // ensure post is considered multipage: needed for single page posts
$numpages++; // increment number of pages
$pages[] = $content;
}
Também tentei aproveitar o novo filtro content_pagination que foi adicionado no 4.4:
add_filter('content_pagination', 'custom_content', 10, 2);
function custom_content($pages, $post) {
$content = html_entity_decode(stripslashes(get_option('custom_content')));
$pages[] = $content;
return $pages;
}
Neste ponto, estou sem idéias sobre como restaurar essa funcionalidade e qualquer assistência seria apreciada.
Respostas:
ATUALIZAÇÃO 21-01-2016 19:35 SA TIME - BUG ENCONTRADO !!!!! SIM!!!!!!
Finalmente encontrei o bug. Como você afirmou em sua última atualização, a falha só acontece quando
$post_content
há uma<!--nextpage-->
tag no conteúdo. Eu testei e confirmei que qualquer outra página após a página depois do<!--nextpage-->
retorno de 404 e a página é redirecionada de volta para a primeira página.Isso ocorre devido às seguintes linhas de código no
handle_404()
método introduzido naWP
classe no WordPress 4.4O que este código faz é, sempre que a
<!--nextpage-->
tag está situado nopost_content
, ele retornará a 404 quando qualquer página é acessada, que é anexado depois que o conteúdo através docontent_pagination
filtro. Devido ao fato de um 404 ser definido,redirect_canonical()
redireciona qualquer página anexada de volta à primeira páginaArquivei um ticket trac sobre esse problema, que você pode conferir aqui
No momento da redação deste documento, ainda não havia nenhum feedback, portanto, verifique regularmente o status do ticket
SOLUÇÃO ATUAL - FEEDBACK A / W TRAC TICKET
Por enquanto, até recebermos comentários e possíveis correções em versões futuras, exclua essas linhas da
WP
classe até novo avisoQUE HORA É ...... É DEBUGGING TIME !!!!!
Eu tive tempo para testar isso completamente. Peguei seu código e testei em:
Minha instalação local v4.3
Minha instalação local v4.4.0
Minha instalação local v4.4.1
Conclua a nova instalação local v4.4.1 apenas com a
Hello World
postagem e aSample Page
páginacom meus permalinks definidos como
default
ePost Name
Aqui está o meu código de teste para criar 4 páginas dentro do meu post de teste.
Eu também testei
para uma boa medida
Em toda e qualquer estrutura de instalação e link permanente, todo o seu código funciona ( exceto o
content_pagination
que é esperado na v4.3 ).Também defini
Sample Page
como uma página inicial estática, mas que falhou na página 2 como conformação ao bug, conforme descrito na minha RESPOSTA ORIGINAL e ** EDITPortanto, a conclusão é que isso não tem nada a ver com o bug no núcleo ou com qualquer outro bug no núcleo. Nos comentários, algo está desmarcando o objeto consultado nas páginas de postagem paginadas, e é algo que precisamos depurar. Infelizmente, como esse problema agora está localizado, não posso fornecer soluções exatas.
DEBUGGANDO A QUESTÃO
Você precisa usar o seguinte fluxo de trabalho para depurar o problema
Consiga uma quantidade enorme de café com alto teor de cafeína e muito açúcar
Faça um backup de você db
Baixe e instale os seguintes plug-ins ( não tenho afiliação com nenhum plug-in )
Objetos de depuração para depuração normal. Depois de instalado e configurado, repare todos os erros óbvios que podem ser destacados pelo plug-in. Não continue para o próximo ponto principal se tiver bugs óbvios. Corrija-os primeiro
Gerenciador de banco de dados que você usará para reparar e limpar seu banco de dados antes de continuar no próximo ponto
Limpar todos os caches, navegadores e plugins
Desative todos os plugins e limpe todos os caches novamente para uma boa medida. Como esse problema parece um problema de redirecionamento, eu provavelmente desativaria primeiro todos os plug-ins que possam ter algo a ver com o redirecionamento. Pode ser que um plug-in ainda não seja compatível com a v4.4. Verifique se o problema persiste, se persistir, continue para o próximo item, caso contrário, vamos ver isso com mais detalhes
Comece desativando todos os plug-ins. Você também pode começar desativando os plug-ins que podem ser óbvios por causar o problema. Teste corretamente sua instalação após a ativação de cada plug-in. O primeiro plugin ativado que causou o problema será o culpado. Nesse caso, entre em contato com o autor do plug-in com os detalhes da depuração. Apenas certifique-se de limpar seus caches após cada ativação de plug-in apenas por uma boa medida
Se você chegou a esse ponto, o marcador anterior não resolveu seu problema. O próximo passo deve ser mudar para um tema em pacote para eliminar seu tema como o problema. Mais uma vez, limpe os caches.
Se tudo falhar, você terá mais duas opções
Exclua
.htaccess
e deixe o WordPress criar um novoReinstalar o WordPress
Isso deve resolver seu problema. Caso contrário, é necessário considerar um bug no núcleo do WordPress que pode estar causando o problema.
Espero que isso ajude a pegar o bug
ATUALIZAR
Na verdade, eu deveria ter ligado ao seguinte bilhete trac que parece explicar tudo mais detalhadamente
Patches interessantes e bastante relevantes do ticket trac acima
https://core.trac.wordpress.org/ticket/35344#comment:16
https://core.trac.wordpress.org/ticket/35344#comment:34
Não posso testar nada concretamente nesse momento, mas você deve trabalhar com os patches sugeridos e testá-los. O que posso entender é que o mesmo código
redirect_canonical()
responsável pela paginação de páginas estáticas também é responsável pela paginação em páginas únicas.RESPOSTA ORIGINAL
Páginas únicas ( como páginas estáticas ) usam
get_query_var( 'page' )
para paginar. Com o WordPress 4.4 ( e na v4.4.1 ), ocorreu um erro que causa problemas na paginação ao usarget_query_var( 'page' )
para paginação.Os relatórios de erros atuais, como o ticket trac # 35365 , apenas mencionam as primeiras páginas estáticas que têm problemas com a paginação, mas, como o bug está relacionado
get_query_var( 'page' )
, eu acho que isso também causaria problemas com a paginação de postagem única que também usaget_query_var( 'page' )
.Você deve tentar os patches conforme descrito nos tickets do trac. Se isso funcionar, você pode aplicar o patch e aguardar a v4.4.2, que terá esse bug corrigido
fonte
Observe que há um erro de sintaxe para todos os três exemplos que você forneceu:
onde um extra
)
é adicionado.Substitua estas linhas para:
Eu não recomendaria mexer com objetos globais em geral, então acho que seu último exemplo com o
content_pagination
filtro é o caminho a seguir aqui.Você também pode evitar anexar páginas vazias com:
Há também uma falta
)
aqui:fonte