WordPress-Slug-Problem mit nicht-lateinischen Zeichen
Lesezeit: 2 Minuten
CodeOverload
Ich verwende Permalinks in WP als: domain.com/category/post_name
Das Problem ist, dass Beitragsnamen nicht-lateinische Zeichen wie z Chinesisch, Hebräisch und Arabisch. Also kodiert es sie zu etwas wie: %20%18%6b%20 Daher zählt es das Zeichen jedes Symbols als ein tatsächliches Zeichen und hat am Ende eine 3-mal längere Länge, als es einige sehr kurze Slugs abschneidet.
Wie kann man das beheben? Oder zumindest wie kann man die Längenbegrenzung zumindest erweitern? Ich habe versucht, die Länge des Datenbankfelds “post_name” von 200 auf 500 zu verlängern, aber es schneidet immer noch kurz ab.
Auf welchem HTTP-Server läuft WordPress?
– eigelb
10. Mai 2012 um 15:25 Uhr
@eggyal Ich führe es derzeit auf XAMPP aus, auf dem Apache ausgeführt wird.
– CodeOverload
10. Mai 2012 um 16:14 Uhr
Oleg Butusow
Du kannst ändern post_name durch Anwenden der Filter für sanitize_title…
Kurzes Beispiel:
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;
}
aber seien Sie vorsichtig … eine schlechte Bereinigung kann ein Sicherheitsrisiko darstellen … SQL-Injektionen usw. …
Vielen Dank @Oleg, das war sehr hilfreich!
– CodeOverload
17. Mai 2012 um 19:18 Uhr
rauben
WordPress sollte Ihre Post-Slugs nicht so kodieren. Ich verwende die ganze Zeit utf8-Zeichen in Titeln und Slugs für Kunden. Es funktioniert gut.
Sind Sie sicher, dass der Zeichensatz Ihrer Datenbanktabelle utf8 ist? Wenn ja, wurde es für eine der Spalten überschrieben? Überprüfen Sie auch wp-config.php zum define('DB_CHARSET', 'utf8');
Ich würde auch alle Plugins deaktivieren und Ihre Permalinks erneut testen. Vielleicht schraubt eines Ihrer Plugins an Ihren Post-Slugs.
Dies ist eine häufige Situation, die mich auch frustriert.
Sie können die maximale URL-Länge auf der Plugin-Konfigurationsseite festlegen. (Standard: 35 Zeichen.)
Außerdem haben Sie die Möglichkeit, die mitgelieferte Stoppwortliste zu bearbeiten.
Hoffe, das wird helfen. Prost !!!
Ich habe es installiert, aber es hat nicht geholfen, WP schneidet immer noch Slugs ab, ich denke, dieses Plugin soll die Längenbegrenzung nicht erweitern, sondern noch mehr verkürzen.
– CodeOverload
10. Mai 2012 um 16:33 Uhr
Eran Oder
Für nicht-englische URLs: Ich verwende IIS mit fcgi und habe die Lösung für nicht-englische Slugs an verschiedenen Stellen im Web gefunden: für Hebräisch: hier
Weitere Informationen zu IIS7 URL Rewrite und Symbolen: hier
Im Allgemeinen mit Ausnahme der IIS-Konfiguration für eine hübsche URL, die Sie am Ende der wp-config.php hinzufügen müssen:
if (isset($_SERVER['UNENCODED_URL']))
$_SERVER['REQUEST_URI'] = $_SERVER['UNENCODED_URL'];
Auf welchem HTTP-Server läuft WordPress?
– eigelb
10. Mai 2012 um 15:25 Uhr
@eggyal Ich führe es derzeit auf XAMPP aus, auf dem Apache ausgeführt wird.
– CodeOverload
10. Mai 2012 um 16:14 Uhr