Problemă cu slug-urile Wordpress pentru caractere non-latine
Folosesc permalink-uri în WP în formatul: domain.com/categorie/post_name
Problema este că numele postărilor conțin caractere non-latine precum chinezești, ebraice și arabe. Așadar, acestea sunt encodate în ceva de genul: %20%18%6b%20
, prin urmare fiecare simbol este considerat ca un caracter individual, ajungând să fie de 3 ori mai lung, ceea ce duce la truncarea unor slug-uri chiar și foarte scurte.
Cum pot rezolva această problemă? Sau cel puțin cum pot extinde limita de lungime? Am încercat să extind lungimea câmpului "post_name" din baza de date de la 200 la 500, dar tot se trunchiază.

Permalink-uri precum http://example/שָׁלוֹם
funcționează de fapt în WordPress 3.3. Poate fi datorită îmbunătățirilor funcției remove_accents() pentru permalink-uri internaționale.
După cum au observat Sean & Steve,
- asigură-te că folosești WordPress ≥ 3.3
- verifică că fișierul .htaccess conține o regulă similară cu
RewriteRule . /index.php [L]
- verifică că baza ta de date este codificată în UTF-8 (și ia în considerare conversia la UTF-8 dacă nu este).
[Răspunsul meu original urmează, nu este chiar atât de relevant acum, dar poate fi încă util:]
Vezi
- http://queryposts.com/function/sanitize_title/
- http://queryposts.com/function/remove_accents/
- http://queryposts.com/function/esc_url/
Dacă titlurile postărilor tale conțin caractere non-ASCII, poți elimina caracterele non-ASCII la generarea slug-urilor pentru postări.
Câteva plugin-uri care pot ajuta:
http://wordpress.org/extend/plugins/strings-sanitizer/
Sanitizează agresiv titlurile pentru a obține slug-uri de postări curate, prietenoase pentru SEO, și nume de fișiere media la încărcare. Funcționează prin conversia caracterelor UTF-8 accentuate comune, precum și a câtorva caractere speciale chirilice, ebraice, spaniole și germane.
http://wordpress.org/extend/plugins/universal-slugs/
[...] dacă vorbești o limbă care folosește caractere care nu sunt incluse în alfabetul englezesc, atunci fie trebuie să accepti permalink-uri lungi și ciudate, fie să le actualizezi manual de fiecare dată când scrii o postare sau o pagină. [...] Plugin-ul va elimina, de asemenea, cuvinte comune precum "și", "και", "το", "the" etc. din URL-uri, deoarece acestea doar contribuie la lungimea URL-ului fără a adăuga nimic la semnificație sau valoare SEO.
http://wordpress.org/extend/plugins/pinyin-slug/
De exemplu, când publici o postare cu un titlu precum: "Chinese PinYin", WordPress atribuie automat un nume lung postării, numit slug:
/%e4%b8%ad%e6%96%87%e6%8b%bc%e9%9f%b3
[...] Cu plugin-ul Chinese PinYin activat, slug-ul pentru exemplul nostru ar arăta astfel:/zhongwenpinyin
http://wordpress.org/extend/plugins/remove-utf-8-from-slug/
elimină toate caracterele UTF-8 din titlu pentru permalink
http://wordpress.org/extend/plugins/pinyin-seo/
Convertește caracterele chinezești în permalink-uri Pinyin.
De asemenea, unele plugin-uri multilingve ar putea să traduci automat slug-urile în engleză (și, prin urmare, în caractere latine), dar nu am folosit niciunul, așa că nu sunt sigur.

Pe lângă sanitizare, singura modalitate de a prelungi lungimea slug-ului este prin modificarea codului WP
în fișierul wp-includes/formatting.php
:
înlocuiți 200
după cum este necesar:
$title = utf8_uri_encode($title, 200);
în fișierul: wp-includes/post.php
căutați cele 3 linii cu:
$alt_post_name = substr( $slug, 0, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix";
Problema vă va urmări la fiecare actualizare a WP
