Ich möchte einige Zeichen aus dem Slug entfernen, wie “¿”, die wir in Spanisch zum Öffnen einer Frage verwenden.
Wenn ich zu wp-includes / formatierung.php gehe und in
function sanitize_title_with_dashes($title)
Zeile 820 wp32 Ich füge das hinzu
$title = str_replace('¿', '', $title);
kurz vor $ title = preg_replace (‘|% ([a-fA-F0-9] [a-fA-F0-9]) |’, ‘— $ 1 —‘, $ title);
Und es funktioniert richtig. Wenn ich also den Titel “¿Qué tal?” die Schnecke ist “que-tal”
Nun, wie mache ich das mit einer function, damit ich sie über functions.php oder über ein Plugin benutzen kann ??
Ich mache das, aber es funktioniert nicht
function limpiar_slug($slug) { $slug = str_replace('¿', '', $slug); return $slug; } add_filter('sanitize_title_with_dashes', 'limpiar_slug');
Irgendein Vorschlag???
Danke im Voraus
Im Anschluss an meinen Kommentar zu Ihrer Frage.
Die Lösung wäre, Ihren eigenen Filter auf die gleichen functionen zu sanitize_title_with_dashes
wie es bei sanitize_title_with_dashes
Fall ist. In diesem Fall denke ich, dass Sie nur darauf abzielen, sich auf sanitize_title
wie es bei sanitize_title_with_dashes
geschieht.
Stellen Sie einfach sicher, dass Sie sich nach sanitize_title_with_dashes
, das mit der Standardpriorität von 10 aktiviert ist.
Z.B.
add_filter('sanitize_title', 'limpiar_slug', 11 );
Keine Notwendigkeit, Core-Dateien zu hacken.
BEARBEITEN SIE UNTEN:
Sie könnten ein paar Regex ausprobieren, hier ist ein Beispiel, mit dem Sie spielen können, ein Code, der aus dem Code von Adriana Villafañe als Antwort auf Regular expression – einen beliebigen Text zu URL-freundlich auf StackOverflow – angepasst wurde.
add_filter( 'sanitize_title', 'sanitize_title_extra' ); function sanitize_title_extra( $title ) { $friendlyURL = htmlentities($title, ENT_COMPAT, "UTF-8", false); $friendlyURL = preg_replace('/&([az]{1,2})(?:acute|lig|grave|ring|tilde|uml|cedil|caron);/i','\1',$friendlyURL); $friendlyURL = html_entity_decode($friendlyURL,ENT_COMPAT, "UTF-8"); $friendlyURL = preg_replace('/[^a-z0-9-]+/i', '-', $friendlyURL); $friendlyURL = preg_replace('/-+/', '-', $friendlyURL); $friendlyURL = trim($friendlyURL, '-'); $friendlyURL = strtolower($friendlyURL); return $friendlyURL; }
Scheint, den Trick zu machen, einige unerwünschte Charaktere aufzuklären, frei zu zwicken, usw. …
Das Problem ist, dass die function sanitize_title_with_dashes
keine Filter verwendet (was seltsam ist, denke ich), so dass du es nicht ändern kannst, ohne die Datei format.php direkt zu hacken 🙁