Anuncia aquí

Corrección de permalinks en WordPress

WordPress en la mayoría de los casos funciona bien para auto generar URLs de entradas con títulos en inglés, pero en nuestro idioma no lo hace tan bien. Por ejemplo, si algún blogger pone como título "Seguridad en WordPress: ¿podríamos vivir sin plugins?", la url generada será seguridad-en-wordpress-%c2%bfpodriamos-vivir-sin-plugins que es equivalente a seguridad-en-wordpress-¿podriamos-vivir-sin-plugins, lo cual naturalmente no se ve bien. :)

Para corregir este pequeño problema, preparé un pequeño plugin que elimina todos los caracteres especiales de los permalinks. Básicamente lo que hago es reemplazar la función sanitize_title_with_dashes por esta otra:

php:
<?php
// Copia de la función sanitize_title_with_dashes (wp-includes/formatting.php)
function custom_sanitize_title_with_dashes($title) {
        $title = strip_tags($title);
        // Preserve escaped octets.
        $title = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---1---', $title);
        // Remove percent signs that are not part of an octet.
        $title = str_replace('%', '', $title);
        // Restore octets.
        $title = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%1', $title);

        $title = remove_accents($title);
               
        if (function_exists('mb_strtolower') && seems_utf8($title)) {
                $title = mb_strtolower($title, 'UTF-8');
        } else {
                $title = strtolower($title);
        }
       
        $title = preg_replace('/&.+?;/', '', $title); // kill entities
        $title = preg_replace('/[^%a-z0-9 _-]/', '', $title);

        $title = preg_replace('/[\s-]+/', '-', $title);
        $title = trim($title, '-');

        return $title;
}
?>

Este plugin todavía es -- y tal vez se quede en -- una versión alpha, si alguno está interesado en la funcionalidad, puede descargarlo o ver el código fuente.

Esta entrada fue publicada en Wordpress

5 Comentarios

  1. 1 g30rg3_x (3 de julio de 2007, 08:49:55 am) http://g30rg3x.com/

    seria mejor que hagas un ticket en el trac no?

  2. 2 alex (3 de julio de 2007, 09:06:27 am) http://www.buayacorp.com

    Si mal no recuerdo, ya reportaron esto varias veces, pero no se hizo nada al respecto. Además hay que tener en cuenta que esta solución no serviría para otros idiomas (Ej. chino).

  3. 3 Victor De la Rocha (4 de julio de 2007, 12:22:21 am) http://www.mis-algoritmos.com

    Justo lo que necesita el blog de jesus (512megas.com) .... Me desespera dar click en el feed y que me envíe a una url que no existe /puf

    Muy buena la aportación Alex ;)

  4. 4 ppriede (26 de diciembre de 2008, 05:18:54 pm) http://kyl.cl

    Gracias por esta excelente solucion
    Ya me volvia yo chango tratando de arreglarlo
    De hecho alguna vez lo reporte a WordPress, pero nunca se considero

    Gracias

  5. 5 alex (28 de diciembre de 2008, 10:33:18 am) http://www.buayacorp.com/

    Sería mejor si utilizas la nueva versión de éste plugin:
    http://www.buayacorp.com/archivos/nueva-version-del-plugin-permalink-fix/

2 Trackbacks

  1. [...] algún tiempo publiqué una versión alpha de un plugin que elimina todos los caracteres especiales de los permalinks (Ejm: [...]

  2. Por Hacer cambio en las URls amigables de WP el 18 diciembre 2009 a las 2:41 pm

    [...] [...]

Publicar un Comentario

Tu email nunca será publicado o compartido. Los campos requeridos están marcados con un *

*
*

Puedes usar estas etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>