Eu tenho um blog com várias páginas em alguma categoria "projetos" que são estruturados / nomeados assim:
- / projetos / projeto-2012
- / projetos / projeto-2013
- / projetos / projeto-2014
- / projetos / projeto-2015
Quando um usuário digita URLs como http://myblog.com/project ou mesmo http://myblog.com/proje, ele é redirecionado para a página / projects / project-2012 . (Com um 301 movido permanentemente!)
Embora eu queira que o wordpress transforme os URLs resultantes em uma página claramente definida (por exemplo, http://myblog.com/?p=123 ) no formato canônico, desejo desativar apenas o preenchimento automático de URL para URLs "pouco claros" que pode apontar para várias páginas.
Minha pergunta é: como posso fazer isso?
Eu também fiz algumas pesquisas ...
A resposta aceita para a pergunta Desativar o preenchimento automático de URL do Wordpress desativa todo o sistema de URL canônico. Isso não é aceitável para mim.
Cerca de quatro anos atrás, algo assim apareceu no rastreador de erros do Wordpress: https://core.trac.wordpress.org/ticket/8948 Enquanto algumas boas soluções (como oferecer uma página "Não encontramos o seu URL. Mas você estava talvez procurando por uma das seguintes páginas? ") foram discutidas lá, o ticket foi encerrado no final.
EDIT: Na verdade, há um ticket mais recente em https://core.trac.wordpress.org/ticket/16557, que cobre exatamente o que eu preciso. Parece ser direcionado para a versão 4.0. E os comentários do ticket também contêm uma solução (veja abaixo).
Respostas:
Ok, depois de pesquisar um pouco mais, finalmente encontrei uma resposta para minha própria pergunta, oculta em um comentário deste ticket de solicitação de recurso: https://core.trac.wordpress.org/ticket/16557 O usuário nacin sugeriu o uso deste código:
Se você adicionar isso a um novo arquivo php de plug-in (por exemplo, em wp-content / plugins / disable-url-autocorrect-guessing.php), você terá um bom plug-in que pode ser ativado para desativar o recurso de "adivinhação" de correção automática do Wordpress .
Para poupar o problema, eu realmente fiz isso e entreguei meu plugin no Wordpress.org. Depois de revisado, você poderá baixá-lo aqui: https://wordpress.org/plugins/disable-url-autocorrect-guessing/
Embora essa seja uma solução funcional, o código sugerido é um pouco complicado. Uma vez que a solicitação de recurso em https://core.trac.wordpress.org/ticket/16557 seja efetivamente implementada, haverá soluções muito melhores para isso, além de um controle muito melhor sobre como a suposição deve ser realmente executada.
fonte
remove_filter()
. Mas agora ignorando apenas um caso específico em que estou tendo problemas. Apenas em caso de alguém interessado sobre o meu problema: wordpress.stackexchange.com/questions/307670/...Infelizmente,
redirect_canonical()
há mais de 400 linhas de código (e continua crescendo de release para release), que não é particularmente estruturado para ser controlado por um propósito. É tudo ou nada que não pode ser configurado de forma flexível.Do ponto de vista prático, suas melhores opções são:
template_redirect
.redirect_canonical
gancho, se o destino criado não for desejável.Em ambos os casos, você terá que desenvolver a lógica do que exatamente torna o redirecionamento indesejável.
fonte
redirect_guess_404_permalink()
e não faz essa distinção, apenas leva a primeira partida que o SQL produz :(