Alguém pode me fornecer uma função para gerar lesmas?

Dec 30 2020

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

1 TomJNowell Dec 30 2020 at 21:14

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/わかもの#Japaneseseu 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#Japaneseentã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 urlencodedissoecho urlencode( $slug )