Ich möchte für einige Zeichenfolgen einen Slug generieren, ohne den Generierungsfluss für WordPress-Slugs zu durchlaufen. Daher möchte ich wissen, welche Funktionen es aufruft, um eine saubere Schnecke zu bekommen. Ich habe sanitize_title () ausprobiert, aber es verbleibt% c2% a0 im Ergebnis.
seo
slug
sanitization
ein Ventilator
quelle
quelle
èäç
usw. werden mit dieser Funktion an ihrem Platz bleiben.sanitize_title_with_dashes
auchsanitize_title
einige Sonderzeichen lassen , dass einige Systeme brechen.sanitize_html_class
Nun, es gibt bereits eine Antwort, aber ich wollte sie ein wenig erweitern. Hier sind meine Ergebnisse:
Wenn wir einen Blick hinein werfen
wp_insert_post()
, sehen wir, dass der$post_name
mitwp_sanitize_title()
(siehewp-includes/post.php
) desinfiziert wird.In der Funktion haben
sanitize_title()
wir einen Filtersanitize_title
. Dies ist interessant, da standardmäßig Filtersanitize_title_with_dashes()
in diesen Filter eingebunden sind (siehewp-includes/default-filters.php
).Das hört sich komisch an. Es wäre toll, den Eingabewert zu kennen, aber das Folgen
wp_insert_post()
sanitize_title()
scheint zu genügen.quelle
sanitize_title()
scheint der einzige zu sein, den du brauchst.In wp-includes / default-filters.php Zeile 211 finden Sie:
Das bedeutet, dass beim Aufrufen
sanitize_title()
zuerst alle Sonderzeichen entfernt und dann dersanitize_title
Filter angewendet und somit aufgerufen wirdsanitize_title_with_dashes()
Wie @JHoffmann betonte, werden durch einfaches Aufrufen
sanitize_title_with_dashes()
keine Sonderzeichen entfernt.quelle
Neben der großartigen Antwort von Websupporter habe ich Folgendes gefunden:
Abhängig von Ihrer Nutzung kommt es darauf an, was Sie brauchen.
sanitize_title()
wie es sagt:... und
sanitize_title_with_dashes
sagt:Also, mit diesem Beispielstring :
Â+Ä Ö %%% ßá %20 oo %pp + -_^^#@!**()=[]|\/\'"<>?``~ èäç
sanitize_title()
Ergebnis:Wie Sie sehen, hat es Zeichen mit Akzent durch ihre nicht-akzentuierten Entsprechungen ersetzt und alle anderen nicht-alphanumerischen Zeichen mit Ausnahme der Zeichen, auf die
%
eine Zahl folgt, entfernt. Sie werden jedoch feststellen, dass sie entfernt wurden, als ein Buchstabe darauf folgte. Vielleicht liegt es daran, dass es es als bereits codiert wahrnimmt . Dies wird erzwungen, wenn Sie versuchen,%c3
eine Zeichenfolge einzufügen. Die Zeichenfolge wird nicht entfernt, da%c3
es sich um eine gültige Codierungssequenz handelt.sanitize_title_with_dashes
Ergebnis:Wie Sie sehen, wurden die Zeichen mit Akzenten nicht entfernt, sondern codiert.
Schauen wir uns nun eine Zeichenfolge ohne Akzentzeichen an, um zu sehen, wie sich beide verhalten ...
Beispiel String:
%%% building %20 oo %pp + -_^^#@!**()=[]|\/\'"<>?``~'
sanitize_title()
Ergebnis:sanitize_title_with_dashes
Ergebnis:Sie sehen also, dass sie genau gleich sind. Der einzige Unterschied besteht also darin, dass eine Charta mit Akzent codiert, während die andere sie ersetzt .
quelle