web-dev-qa-db-de.com

Wie kann verhindert werden, dass Apostrophe und Anführungszeichen in Permalinks angezeigt werden?

Ich verwende benutzerdefinierte Permalinks "/% category% /% postname% /". Wenn ein Beitragstitel Anführungszeichen oder Apostrophe enthält, werden diese in der URL angezeigt.

Kann mir jemand sagen, wie ich verhindern kann, dass sie in der Schnecke erscheinen?

Ich verwende WordPress 3.0.4.

6
user1462

In WordPress werden "---" und "-" zu Strichen (- —) und "-" zu einem Bindestrich (- #8212;). Die Funktion sanitize_title_with_dashes () fängt diese nicht ab.

Diese Funktion verwendet die datenbasierte Kopie, aber der dem Benutzer angezeigte Titel durchläuft immer eine Texturierungsfunktion. Wenn wir also En/Em-Striche auf dem Weg in die Datenbank ersetzen, ist das Nettoergebnis dasselbe und vermeidet diese fehlerhaften URL-Fälle, in denen die Titel neu texturiert werden.

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;
}
5
editor

Ich habe gesehen, dass es einige Plugins gibt, um dieses Problem zu umgehen. Überprüfen Sie URL leeren zum Beispiel:

Dieses einfache WordPress-Plugin wird zum Generieren von Artikel-Slugs (= in URL verwendeter Artikelname) verwendet. Es werden alle Zeichen mit Ausnahme der Buchstaben a-z, Zahlen und Bindestriche (-) entfernt. Das Plugin wird als letztes im gesamten URL-Generierungsprozess ausgeführt. Daher werden zuerst alle Standard-Ersetzungen von diakritischen Zeichen und Akzenten durchgeführt und dann, falls noch einige seltsame Zeichen vorhanden sind, herausgeschnitten.

3
Fernando Briano