wptexturize() in BricksBuilder & Polylang
Kurze Antwort
Teilweise. Es kommt darauf an, welches Bricks‑Element du verwendest:
| Element | wptexturize() aktiv? |
|---|---|
| Rich Text Element | ✅ Ja – läuft durch die WP-Content-Pipeline (inkl. wpautop, wptexturize) |
| Basic Text Element | ❌ Nein – gibt den Text "roh" aus, ohne die klassischen Content-Filter |
| Heading, Text Link, etc. | ❌ In der Regel nein, gleiche Ursache wie beim Basic Text |
WP-Query/Post-Content via {content}-Dynamic-Data |
✅ Ja, wenn wirklich the_content genutzt wird |
Das wurde auch im offiziellen Bricks-Forum bestätigt: Nutzer beschwerten sich, dass Anführungszeichen im Rich Text Element automatisch "prettified" (→ typografische Anführungszeichen) werden, während das Basic Text Element unverändert bleibt. Die Bricks-Entwickler bestätigten: Das ist WP-Core-Verhalten (wptexturize), kein Bug in Bricks selbst.
Wer es abschalten will (nicht was du willst, aber zur Einordnung):
add_filter( 'run_wptexturize', '__return_false' );
Und wie ist es mit mehreren Sprachen (Polylang)?
wptexturize() holt sich die passenden „intelligenten" Anführungszeichen (z. B. „…" im Deutschen vs. “…” im Englischen vs. «…» im Französischen) aus übersetzten Strings im WordPress-Core (wp-includes/formatting.php), die über die geladene .mo/.po-Datei der aktuell aktiven Locale kommen – nicht statisch für „Deutsch" hartcodiert.
Das heißt konkret:
-
Wenn Polylang die Locale für die jeweils angezeigte Sprachversion korrekt setzt (was es standardmäßig via
locale-Filter frühzeitig im Request tut, bevor Content gerendert wird), dann bekommtwptexturize()beim Rendern der Seite auch die richtige Locale und liefert automatisch die passenden landestypischen Anführungszeichen – aber nur für Elemente, die überhaupt durchwptexturize()laufen (siehe Tabelle oben, also praktisch nur das Rich Text Element bzw. echtenthe_content-Output). -
Wichtige Einschränkung: Die übersetzten Zeichen-Arrays innerhalb von
wptexturize()werden einmal pro Request statisch gecached (staticVariablen in der Funktion). Das ist in der Regel unproblematisch, weil eine Frontend-Anfrage ja nur eine Sprache/Locale betrifft – es sei denn du hast Setups, die mitten im Request die Sprache umschalten (z. B. bestimmte Multisite- oder Caching-Konstellationen), dann kann es zu falschen/veralteten Zeichen kommen. -
Basic Text / Heading Elemente bekommen NIE lokalisierte Anführungszeichen, unabhängig von Polylang – weil
wptexturize()dort gar nicht aufgerufen wird. Wenn du in diesen Feldern"Text"schreibst, bleibt es ein gerades Anführungszeichen, egal welche Sprache aktiv ist.
Praktische Empfehlung
- Willst du korrekt lokalisierte Anführungszeichen → nutze für Textinhalte mit Anführungszeichen das Rich Text Element statt Basic Text/Heading, dann greift
wptexturize()+ Polylang-Locale zusammen automatisch richtig. - Willst du es für Basic Text/Heading auch erzwingen, kannst du selbst einen Filter auf die Bricks-Render-Ausgabe legen, z. B.:
add_filter( 'bricks/text-basic/render_content', function( $content ) {
return wptexturize( $content );
}, 10, 1 );
(Hook-Name kann je Bricks-Version leicht variieren – ggf. bricks/heading/output oder bricks/text/content prüfen, da Bricks nicht für jedes Element denselben Filternamen bereitstellt.)
- Alternative: Direkt schon in der ACF/Text-Eingabe die richtigen Unicode-Zeichen „ “ ” ‚ ' ' verwenden, statt dich auf
wptexturize()zu verlassen – dann ist es unabhängig vom Element und von Polylang-Locale-Timing zuverlässig korrekt, gerade bei sprachübergreifenden Multilingual-Setups.
Fazit: wptexturize() funktioniert in Bricks nur dort, wo Bricks tatsächlich den klassischen WordPress-Content-Filter-Stack nutzt (Rich Text Element). Mit Polylang bekommst du dort auch korrekt lokalisierte Anführungszeichen, sofern die Locale beim Rendern richtig gesetzt ist. Für alle anderen Bricks-Elemente (Basic Text, Heading etc.) greift die Funktion nicht – dort musst du selbst nachhelfen oder gleich die richtigen Zeichen eintippen.