WordPress-Slug-Problem mit nicht-lateinischen Zeichen

Lesezeit: 2 Minuten

Benutzeravatar von CodeOverload
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

Benutzeravatar von Oleg Butuzov
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

Benutzeravatar von Rob
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.

Überprüfen Sie dieses Plugin. Saubere Stämme

  1. Sie können die maximale URL-Länge auf der Plugin-Konfigurationsseite festlegen. (Standard: 35 Zeichen.)
  2. 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

Benutzeravatar von Eran Or
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'];

hier finden Sie mehr über UNENCODED_URL

Warum nicht diese schlechten Zeichen beim Erstellen/Speichern des Permalinks entfernen?

1428960cookie-checkWordPress-Slug-Problem mit nicht-lateinischen Zeichen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy