Problema de slug de WordPress con caracteres no latinos

3 minutos de lectura

avatar de usuario
Sobrecarga de código

Estoy usando enlaces permanentes en WP como: domain.com/category/post_name

El problema es que los nombres de las publicaciones tienen caracteres no latinos como chino, hebreo y árabe. Entonces los codifica en algo como: %20%18%6b%20 por lo tanto, cuenta el carácter de cada símbolo como un carácter real, terminando con 3 veces más de longitud que trunca algunos slugs muy cortos.

¿Cómo arreglar eso? ¿O al menos cómo extender el límite de longitud al menos? Intenté extender la longitud del campo de la base de datos “post_name” de 200 a 500, pero todavía se está truncando.

  • ¿En qué servidor HTTP está ejecutando WordPress?

    – eggyal

    10 mayo 2012 a las 15:25


  • @eggyal Lo estoy ejecutando actualmente en XAMPP que ejecuta Apache.

    – Sobrecarga de código

    10 mayo 2012 a las 16:14

avatar de usuario
Oleg Butúzov

Tu puedes cambiar post_name aplicando los filtros para sanitize_title
Breve ejemplo:

add_filter('sanitize_title', 'sanitize_title_custom', 10, 3);
function sanitize_title_custom($title, $raw_title, $context){
    // do some proccesing with title or raw_title
    // assign new result to $title ($title = str_replace(" ","-", $raw_title);// as example )
    return $title;
}

pero tenga cuidado… una mala desinfección puede ser un riesgo para la seguridad… inyecciones de sql, etc…

  • ¡Muchas gracias @Oleg que fue muy útil!

    – Sobrecarga de código

    17 mayo 2012 a las 19:18

avatar de usuario
Robar

WordPress no debería codificar los slugs de tus publicaciones de esa manera. Uso caracteres utf8 en títulos y slugs todo el tiempo para los clientes. Funciona bien.

¿Estás seguro de que el juego de caracteres de la tabla de tu base de datos es utf8? Si es así, ¿se ha anulado para alguna de las columnas? también verifique wp-config.php por define('DB_CHARSET', 'utf8');

También deshabilitaría cualquier complemento y probaría sus enlaces permanentes nuevamente. Tal vez uno de sus complementos esté jodiendo con sus post slugs.

Esta es una situación común que también me frustra.

Compruebe este complemento. Troncos limpios

  1. Puede establecer la longitud máxima de URL en la página de configuración del complemento. (Predeterminado: 35 caracteres).
  2. También tiene la opción de editar la lista de palabras vacías suministrada.

Espero que esto ayude. Salud !!!

  • Lo instalé pero no ayudó, WP aún trunca las babosas, supongo que este complemento no está destinado a extender el límite de longitud sino a acortarlo aún más.

    – Sobrecarga de código

    10 mayo 2012 a las 16:33

avatar de usuario
Eran O

Para URL no en inglés: estoy usando IIS con fcgi y encontré la solución para slug no en inglés en diferentes lugares de la web: para hebreo: aquí
para obtener más información sobre la reescritura de URL y los símbolos de IIS7: aquí
en general, excepto la configuración de IIS para la URL bonita que debe agregar al final de wp-config.php:

    if (isset($_SERVER['UNENCODED_URL']))
$_SERVER['REQUEST_URI'] = $_SERVER['UNENCODED_URL'];

aquí encontrará más información sobre UNENCODED_URL

¿Por qué no eliminar estos caracteres malos al crear/guardar el enlace permanente?

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad