Nueva versión del plugin “Permalink Fix”

Hace algún tiempo publiqué una versión alpha de un plugin que elimina todos los caracteres especiales de los permalinks (Ejm: ¿, !, etc). Si bien es cierto que este plugin hacía relativamente bien su trabajo, existía un bug en el para las entradas anteriores que contenían ese tipo de caracteres, devolvía una página de error (no encontrado).

Aprovechando el tiempo libre de estas fiestas de fin de año he corregido este bug, de modo que ahora el plugin sólo se ejecuta antes de guardar las entradas:

php:
<?php
/*
Plugin Name: Permalink Fix
Plugin URI: http://www.buayacorp.com/
Description: Elimina algunos caracteres especiales de las URLs de las entradas (Ejm: ¿, !, etc).
Author: Alexander Concha
Version: 0.1.2
Author URI: http://www.buayacorp.com/
*/


if (!defined('ABSPATH')) die;

// Based on sanitize_title_with_dashes method (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;
}

function __enable_fix($post_name) {
        remove_filter('sanitize_title', 'sanitize_title_with_dashes');
        add_filter('sanitize_title', 'custom_sanitize_title_with_dashes');

        return $post_name;
}

add_filter('pre_post_name', '__enable_fix');
?>

Si por azares del destino alguien está usando este plugin 😀 , es recomendable que actualicen para evitar este molesto error. Pueden descargar la actualización desde este blog o desde mi repositorio temporal de código.

11 Replies to “Nueva versión del plugin “Permalink Fix””

  1. Mario: Hmm, no entiendo muy bien a qué te refieres, ¿es algún bug en el plugin o algo por el estilo? porque sería raro que el plugin genere errores fatales.

    Dubó: El guión largo y cualquier otro caracter especial es eliminado. Si la entrada tiene el título "2008—¿más trabajo?" el enlace generado quedará como "2008mas-trabajo".

  2. Hola .

    Solo hay que activarlo en la lista de plugin y listo, trabaja solito al momento de crear un articulo,
    o hay que configurar alguna opcion ?

    y si ya tenngo creado un articulo cuyo titulo ya tiene caracteres extraños , que devo hacer para que me los corrija?

    gracias..

Comments are closed.