Problema con slugs de WordPress y caracteres no latinos
Estoy usando permalinks en WordPress como: domain.com/categoria/nombre_entrada
El problema es que los nombres de las entradas tienen caracteres no latinos como chino, hebreo y árabe. Por lo que los codifica en algo como: %20%18%6b%20
y por lo tanto cuenta cada símbolo codificado como un carácter real, terminando con 3 veces más longitud que termina truncando incluso slugs muy cortos.
¿Cómo se puede arreglar esto? ¿O cómo extender al menos el límite de longitud? He intentado extender la longitud del campo "post_name" en la base de datos de 200 a 500, pero sigue truncándose.

Los enlaces permanentes como http://example/שָׁלוֹם
realmente funcionan en mi WordPress 3.3. Podría deberse a las mejoras en remove_accents() para enlaces permanentes i18n.
Como señalaron Sean & Steve,
- asegúrate de que estás usando WordPress ≥ 3.3
- verifica que tu archivo .htaccess contenga una regla similar a
RewriteRule . /index.php [L]
- comprueba que tu base de datos esté codificada en UTF-8 (y considera convertirla a UTF-8 si no lo está).
[Mi respuesta original continúa, no tan relevante ahora pero quizás aún útil:]
Consulta
- http://queryposts.com/function/sanitize_title/
- http://queryposts.com/function/remove_accents/
- http://queryposts.com/function/esc_url/
Si tus títulos de publicaciones contienen algunos caracteres ASCII, puedes eliminar caracteres no ASCII al generar slugs de publicaciones.
Algunos plugins pueden ayudar:
http://wordpress.org/extend/plugins/strings-sanitizer/
Sanitiza agresivamente los títulos para obtener slugs de publicaciones limpios y amigables para SEO, así como nombres de archivos de medios durante la carga. Funciona convirtiendo caracteres UTF-8 acentuados comunes, así como algunos caracteres especiales cirílicos, hebreos, españoles y alemanes.
http://wordpress.org/extend/plugins/universal-slugs/
[...] si hablas un idioma que utiliza caracteres que no están incluidos en el alfabeto inglés, entonces tienes que soportar enlaces permanentes masivos y de aspecto extraño, o actualizarlos manualmente cada vez que escribas una publicación o página. [...] El plugin también eliminará palabras comunes como "y", "και", "το", "the", etc. de las URLs, ya que simplemente contribuyen a la longitud de la URL sin añadir nada al significado o al valor SEO.
http://wordpress.org/extend/plugins/pinyin-slug/
Por ejemplo, cuando publicas una entrada con un título como este: "Pinyin chino", Wordpress asigna automáticamente un nombre de archivo largo a tu publicación, llamado slug:
/%e4%b8%ad%e6%96%87%e6%8b%bc%e9%9f%b3
[...] Con el plugin Chinese PinYin activado, el slug para nuestra entrada de blog de ejemplo se vería así:/zhongwenpinyin
http://wordpress.org/extend/plugins/remove-utf-8-from-slug/
elimina todo UTF-8 del título al enlace permanente
http://wordpress.org/extend/plugins/pinyin-seo/
Convierte caracteres chinos a enlaces permanentes en Pinyin.
Además, algunos de los plugins multilingües podrían traducir automáticamente tus slugs al inglés (y por lo tanto a caracteres solo latinos), pero no he usado ninguno de ellos, así que no estoy seguro.

Además de sanitizar, la única forma de extender la longitud del slug es modificando el código de WP
en el archivo wp-includes/formatting.php
:
reemplaza 200
según corresponda:
$title = utf8_uri_encode($title, 200);
en el archivo: wp-includes/post.php
busca las 3 líneas con:
$alt_post_name = substr( $slug, 0, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix";
El problema te perseguirá con cada actualización de WP
