web-dev-qa-db-fra.com

Tronçon non latin post slug

J'ai créé un type d'article personnalisé et défini sa structure de lien permanent sur 'catégorie/nom de poste'.

J'ai constaté que parfois, lorsque je crée un post dans des caractères non latins, le slug de post est coupé.

J'ai googlé et découvert que les champs post guid et post_name sont limités à 255 et 200 caractères. et aussi remarqué que la valeur dans ces champs (pour les slugs non latins) est codée (comme% 85% e0% e2% b2% b2% b5% e0% b2% b0% e0% b2) ce qui prend beaucoup plus de place.

ma base de données est encodée utf8 et collate est utf8_general_ci. J'ai essayé d'autres collations mais sans succès.

y at-il un moyen de résoudre ce problème afin que mon slug reste complet, peu importe la structure du permalien ou la longueur du titre?

Merci.

1
spartacus

Non, ce n'est pas tout à fait possible.

WordPress utilise le pourcentage d'encodage pour assainir le slug. Vous pouvez annuler cette opération et générer des caractères non finis, mais le navigateur les échangera immédiatement contre des caractères codés en pourcentage lorsque vous tenterez de visiter la page.

Que votre base de données stocke ces caractères et que l'encodage de la table soit sans importance, car ces données sont envoyées via HTTP, et la convention pour les URL est ASCII, qui ne prend pas en charge ces codes de caractères.

Quant à la longueur ne dépassant pas 255 caractères, c'est parce que les colonnes slug et post_name de la base de données ont une longueur maximale de 200. Vous auriez besoin de changer cela pour avoir des slugs plus longs, mais je déconseille fortement cela.

On s’attend généralement à ce que les URL soient un sous-ensemble strict de caractères latins ASCII. Je suis conscient qu'il existe des domaines chinois non standard, mais je ne suis pas sûr de la façon dont ils sont traités par les navigateurs.

1
Tom J Nowell