Y a-t-il une longueur maximale de slug?

11

Un client vient de créer une publication avec un slug très long (90 caractères), sans caractères spéciaux (autres que des traits d'union), etc.

Chaque fois qu'un clic a été fait sur le lien vers ce message, y compris les liens "Aperçu" ou "Afficher ce message" à partir de l'arrière de l'administrateur, un 404 a été généré.

Une fois le slug coupé manuellement, tout a fonctionné comme prévu. Est-ce une "fonctionnalité" ou un "bug"?

EDIT: une note pour tous ceux qui parlent des limites de bases de données.

  

Si j'atteignais la limite du champ DB, le slug lui-même serait   tronqué. Réfléchis-y une seconde. Dans le cas de la plupart des WP   installations, wp_posts.post_name est VARCHAR (200). Alors, disons que   quelqu'un tape un titre avec > 200 caractères. Ce qui se produit? La limace obtient   tronqué à 200 caractères et stocké dans wp_posts.post_name. Ce n'est pas comme   quelqu'un va et en tapant le titre complet de la publication dans le   barre d'adresse du navigateur, en remplaçant les espaces par des tirets non? le   L’URL est générée par WordPress, et il obtient l’URL du fichier.   wp_posts.post_name table et juste en le mettant dans l'attribut href   de la balise d'ancrage. Donc, il n'y aura pas de disparité là-bas. le   Toute chose DB est un hareng rouge.

Dans tous les cas, le slug en question n’est que de 90 caractères. Il n’a donc rien à voir avec les limites de base de données.

Existe-t-il des limites connues concernant la réécriture?

    
posée Tom Auger 23.05.2012 - 17:34

3 réponses

9

En raison de la structure de la table wp_posts, la longueur de la colonne post_name (la colonne pour les slugs) est égale à 200 caractères.

    
réponse donnée Eugene Manuilov 23.05.2012 - 17:48
2

Je suppose qu'il n'a pas de limite par lui-même mais la propriété du champ dans la base de données pour les slugs peut être définie sur une longueur maximale.

Vérifiez la base de données!

    
réponse donnée Fredrik Weiland 23.05.2012 - 17:50
0

Le problème n'était probablement même pas directement lié à WordPress / base de données ...

Mais la longueur de l'URL dépassait 255 caractères (et tous les navigateurs Web ne font pas comme ça).

Ce qui s'est passé ici aurait pu être une URL de plus de 255 caractères, tronquée par la barre d'adresse du navigateur lors de son ouverture ... provoquant la récupération d'un permalien incorrect ... entraînant un 4o4.

On peut donc supposer que la longueur maximale du slug pourrait être:

255 - la longueur de (protocole + nom de domaine complet + structure de lien permanent) ...

  • basé sur la limite stricte du navigateur.

Mais il ne peut pas dépasser 200 caractères ...

  • basé sur la taille du champ du post_name.

Même si quelque chose d'autre aurait pu causer le 4o4 dans ce cas particulier.

Cela aurait pu être un caractère qui n'était pas correctement codé aussi, les raisons pour 4o4 sont assez interminables ... avez-vous déjà considéré un mauvais cluster sur le disque dur ou un module de RAM défectueux? :)

    
réponse donnée Martin Zeitler 30.05.2012 - 06:28

Lire d'autres questions sur les étiquettes