Alguém pode me fornecer uma função para gerar lesmas?
As funções que o Wordpress usa para gerar slugs estão espalhadas em várias funções e filtros. Não consigo encontrar todos eles. Alguém pode me fornecer uma única função php para gerar slugs? Não preciso de todas as funcionalidades do Wordpress, só preciso codificar caracteres não latinos e remover caracteres ilegais que não são permitidos em url.
Esta postagem fornece uma função, mas não pode lidar com caracteres não latinos.
Obrigado!
Respostas
Esta postagem fornece uma função, mas não pode lidar com caracteres não latinos.
Isso ocorre porque os URLs não podem ter caracteres não latinos / ASCII.
Os navegadores podem mostrar caracteres não latinos para você, mas é apenas um recurso da interface do usuário.
Por exemplo, se você visitar esta URL do Wikcionário:, a URL do https://en.wiktionary.org/wiki/わかもの#Japanese
seu navegador codifica os caracteres japoneses para obter a URL real: https://en.wiktionary.org/wiki/%E3%82%8F%E3%81%8B%E3%82%82%E3%81%AE#Japanese
então a URL o decodifica ao exibir a URL. A versão com os sinais de porcentagem é o URL real.
Da mesma forma com quaisquer outros códigos de caracteres não ASCII, por exemplo, árabe. Se você criar uma postagem com o slug わかもの
, salvar e verificar o banco de dados, você não verá わかもの
, verá %e3%82%8f%e3%81%8b%e3%82%82%e3%81%ae
. Da mesma forma, a IU mostrará os caracteres japoneses, mas se você copiar o link, obterá a versão codificada.
Se atualizarmos o banco de dados e alterarmos o slug da postagem para わかもの
, a postagem não poderá ser carregada e obteremos um 404. Isso porque o slug é inválido e não é possível carregar uma URL que corresponda a esse slug.
sim, preciso que os caracteres não latinos sejam codificados como% xx
Você precisa urlencode
dissoecho urlencode( $slug )