Skip to main content

wptexturize() in WordPress

Was es macht

wptexturize() ist eine WordPress-Kernfunktion (in wp-includes/formatting.php), die einfache, "dumme" Zeichen in typografisch korrekte Sonderzeichen umwandelt – ähnlich dem "Smart Quotes"-Feature aus Textverarbeitungsprogrammen.

Konkret ersetzt sie unter anderem:

Eingabe Ausgabe Bezeichnung
' (gerades Anführungszeichen) / typografische Apostrophe/Anführungszeichen
" / typografische doppelte Anführungszeichen
-- En-Dash
--- Em-Dash
... Ellipse (Auslassungspunkte)
(c) © Copyright-Zeichen
(r) ® Registered-Trademark-Zeichen
(tm) Trademark-Zeichen
1/4, 1/2 usw. ¼, ½ Bruchzahlen (teilweise)
mehrere Bindestriche entsprechende Gedankenstriche

Zusätzlich schützt die Funktion bestimmte Bereiche vor der Umwandlung – z. B. Inhalte in <pre>, <code>, <script>, <style>-Tags sowie Shortcodes, damit dort keine ungewollten Zeichenersetzungen passieren.

Wo wird sie angewendet?

Standardmäßig hängt WordPress wptexturize() per Filter an mehrere Ausgabepunkte:

  • the_content
  • the_title
  • the_excerpt
  • Kommentartexte
  • Widget-Texte
  • u. v. m.

Das läuft über den content_filters-Mechanismus, meist mit Priorität 10.


Kann man das steuern?

Ja, auf mehreren Ebenen:

1. Komplett deaktivieren

Für einen bestimmten Filter (z. B. Content) den Hook entfernen:

remove_filter( 'the_content', 'wptexturize' );
remove_filter( 'the_title', 'wptexturize' );
remove_filter( 'the_excerpt', 'wptexturize' );

Das muss nach der Filterregistrierung laufen, z. B. im init-Hook oder später:

add_action( 'init', function() {
    remove_filter( 'the_content', 'wptexturize' );
} );

2. Über den run_wptexturize-Filter global steuern

WordPress bietet einen dedizierten Filter, um die Funktion an- oder abzuschalten:

add_filter( 'run_wptexturize', '__return_false' );

⚠️ Das deaktiviert die Funktion global für alle Aufrufe.

3. Ergebnis nachträglich anpassen

Über den Filter wptexturize_output lässt sich das Ergebnis nachbearbeiten – etwa um bestimmte Ersetzungen wieder zurückzudrehen:

add_filter( 'wptexturize_output', function( $output ) {
    // eigene Logik, z. B. bestimmte Ersetzungen rückgängig machen
    return $output;
} );

4. Für bestimmte Inhalte gezielt umgehen

Innerhalb von Content kann man Bereiche mit <code>, <pre> oder <script>/<style>-Tags schützen – dort greift wptexturize() ohnehin nicht.

5. Direkt im Theme/Plugin aufrufen oder umgehen

Man kann die Funktion auch manuell aufrufen:

echo wptexturize( $custom_text );

…falls man sie gezielt nur an einer Stelle nutzen möchte, ohne die globalen Hooks zu berühren.


Praktischer Tipp

Häufigster Anwendungsfall für das Deaktivieren: Wenn eigener Code, Shortcodes oder JSON-Ausgaben im Content stehen und durch die Zeichenersetzung (v. a. Anführungszeichen) kaputtgehen. Dann ist Variante 1 (gezieltes remove_filter) meist die sauberste Lösung, da sie andere Bereiche unangetastet lässt.

Falls du willst, kann ich dir auch zeigen, wie man das nur für einen bestimmten Post-Typ oder Block steuert – sag einfach Bescheid! 🙂