How to prevent apostrophes and quotes from appearing in permalinks?

I’m using custom permalinks “/%category%/%postname%/”. Whenever a post title contains quotes or apostrophes they appear in the URL.

Can someone tell me how prevent them from appearing in the slug?

Read More

I am running WordPress 3.0.4.

Related posts

Leave a Reply

2 comments

  1. In WordPress, “—” and ” — ” become em-dashes (— ) and “–” becomes an en-dash (— #8212;). The sanitize_title_with_dashes() function doesn’t catch these.

    That function uses the databased copy, but the title displayed to the user always goes through a texturize function. So if we replace en/em dashes on their way into the database, the net result will be the same and avoid these bad URL cases the titles are re-texturized.

    add_action( 'title_save_pre', 'do_replace_dashes' );
    function do_replace_dashes($string_to_clean) {
        # The html entities (–  and —) don’t actually work but I include them for kicks and giggles. 
        $string_to_clean = str_replace( array('—', '—', '–', '–', '‚', '„', '“', '”', '’', '‘', '…'), array(' -- ',' -- ', '--','--', ',', ',,', '"', '"', "'", "'", '...'), $string_to_clean );
        return $string_to_clean;
    }
    
  2. I’ve seen there are some plugins to work around this problem. Check Clean URL for example:

    This simple WordPress plugin is used
    when generating article slug (=
    article name used in URL). It removes
    all characters other than letters a-z,
    numbers and hyphens (-). The plugin
    runs as the last one in the whole
    url-generating process, so first all
    standard replacements of diacritics
    and accents are performed, and then,
    if still some strange characters are
    present they are cut out.