Qualcuno può fornirmi una funzione per generare slug?

Dec 30 2020

Le funzioni che Wordpress usa per generare slug sono sparse in diverse funzioni e filtri. Non riesco a trovarli tutti. Qualcuno può fornirmi una singola funzione php per generare slug? Non ho bisogno di tutte le funzionalità di Wordpress, ho solo bisogno di codificare caratteri non latini e rimuovere caratteri illegali che non sono ammessi nell'URL.

Questo post fornisce una funzione, ma non può gestire caratteri non latini.

Grazie!

Risposte

1 TomJNowell Dec 30 2020 at 21:14

Questo post fornisce una funzione, ma non può gestire caratteri non latini.

Questo perché gli URL non possono contenere caratteri non latini / ASCII.

I browser potrebbero mostrarti caratteri non latini, ma è solo una funzionalità dell'interfaccia utente.

Ad esempio, se visiti questo URL di Wikizionario:, l'URL del https://en.wiktionary.org/wiki/わかもの#Japanesetuo browser codifica i caratteri giapponesi per ottenere l'URL reale: https://en.wiktionary.org/wiki/%E3%82%8F%E3%81%8B%E3%82%82%E3%81%AE#Japanesequindi l'URL lo decodifica quando mostra l'URL. La versione con i segni di percentuale è l'URL reale.

Allo stesso modo con qualsiasi altro codice di caratteri non ASCII, ad esempio l'arabo. Se crei un post con lo slug わかものpoi salvi e controlli il database, non vedrai わかもの, vedrai %e3%82%8f%e3%81%8b%e3%82%82%e3%81%ae. Allo stesso modo l'interfaccia utente ti mostrerà i caratteri giapponesi, ma se copi il collegamento, ottieni la versione codificata.

Se poi aggiorniamo il database e cambiamo lo slug del post in わかもの, il post ora non può essere caricato e otteniamo un 404. Questo perché lo slug non è valido e non è possibile caricare un URL che corrisponda a quello slug.

sì, ho bisogno che i caratteri non latini siano codificati come% xx

È necessario urlencodecheecho urlencode( $slug )