web-dev-qa-db-fra.com

Problème lié à Wordpress avec des caractères non latins

J'utilise des permaliens dans WP en tant que: domain.com/category/post_name

Le problème est que les noms de poste ont des caractères non latins tels que chinois, hébreu et arabe . Donc, il les code comme suit: %20%18%6b%20 et par conséquent, il considère le caractère de chaque symbole comme un caractère réel, se terminant avec une longueur 3 fois plus longue qu'il tronque certains slug très courts.

Comment résoudre ce problème? Ou comment prolonger la limite de longueur au moins? J'ai essayé d'étendre la longueur du champ de base de données "post_name" de 200 à 500, mais sa longueur est toujours trop courte.

7
Ryan

Les liens permanents comme http://example/שָׁלוֹם fonctionnent actuellement dans WordPress 3.3. Peut-être que les améliorations remove_accents () pour les permaliens i18n .

Comme le notent Sean et Steve,

  • assurez-vous d'utiliser WordPress ≥ 3.3
  • assurez-vous que votre fichier .htaccess contient une règle semblable à RewriteRule . /index.php [L]
  • vérifiez que votre base de données est encodée en UTF-8 (et envisagez de convertir en UTF-8 si non).

[Ma réponse initiale suit, pas si pertinente maintenant mais peut-être encore utile:]

Voir

Si vos titres de publication contiennent des caractères ASCII, vous pouvez supprimer les caractères non-ASCII lors de la création de publications .

Certains plugins peuvent aider:

  • http://wordpress.org/extend/plugins/strings-sanitizer/

    Désinfecte de manière agressive les titres pour les noms de fichiers propres, respectueux du référencement, et les noms de fichiers de supports lors du téléchargement. Fonctionne en convertissant des caractères UTF-8 accentués courants, ainsi que quelques caractères spéciaux cyrilliques, hébreux, espagnols et allemands.

  • http://wordpress.org/extend/plugins/universal-slugs/

    […] S'il vous arrive de parler une langue utilisant des caractères spéciaux qui ne figurent pas dans l'alphabet anglais, vous devez alors utiliser des liens permanents énormes et bizarres ou les mettre à jour manuellement chaque fois que vous écrivez un message ou une page. […] Le plugin supprimera également les mots communs tels que "et", "και", "το", "the" etc. des URL, car ils contribuent simplement à la longueur de l'URL sans rien ajouter à la signification ou à la Valeur de référencement.

  • http://wordpress.org/extend/plugins/pinyin-slug/

    Par exemple, lorsque vous publiez une publication dont le titre est le suivant: "Chinese PinYin", Wordpress attribue automatiquement à votre publication un nom de fichier long, appelé une publication slug: /%e4%b8%ad%e6%96%87%e6%8b%bc%e9%9f%b3 […] avec le plugin Chinese PinYin activé, le slug de notre publication d'exemple. ressemblerait à ceci: /zhongwenpinyin

  • http://wordpress.org/extend/plugins/remove-utf-8-from-slug/

    supprimer tous les UTF-8 du titre au permalien

  • http://wordpress.org/extend/plugins/pinyin-seo/

    Convertir des caractères chinois en Pinyin. Permaliens.

De plus, certains plugins multilingues pourraient peut-être traduire vos slugs en anglais (et donc en caractères latins uniquement), mais je n'en ai utilisé aucun, je ne suis donc pas sûr.

8
sam

Hormis la désinfection, le seul moyen d’allonger la longueur du slug est de modifier le code WP

dans le fichier wp-includes/formatting.php:

remplacez 200 en conséquence:

$title = utf8_uri_encode($title, 200);

dans le fichier: wp-includes/post.php recherche 3 lignes avec:

$alt_post_name = substr( $slug, 0, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix";

Le problème va vous traquer à chaque WP mise à jour

2
Jacek Kaniuk