Darstellungsprobleme bei lokalisiertem WordPress (Tschechisch, Slowakisch, Deutsch, Französisch)
Problem
WOOT (WooCommerce Products Tables) zeigt Produkte auf Websites mit bestimmten Sprachlokalisierungen nicht korrekt an. Die Tabelle erscheint leer oder in der Browser-Konsole treten JSON-Parsing-Fehler auf.
Betroffene Sprachen:
- Tschechisch (cs_CZ)
- Slowakisch (sk_SK)
- Deutsch (de_DE)
- Französisch (fr_FR)
- Weitere Sprachen mit typografischen Anführungszeichen
Ursache
WordPress wandelt gewöhnliche ASCII-Anführungszeichen (") über die Funktion wptexturize() automatisch in lokalisierte typografische Anführungszeichen um (z. B. tschechische „Anführungszeichen" oder deutsche „Anführungszeichen"). Das bricht das JSON-Parsing, denn JSON erfordert gewöhnliche ASCII-Anführungszeichen.
Beispiel für das Problem:
// Valid JSON (works):
{"name": "Product"}
// Broken JSON (Czech localization):
{„name": „Product"}Wenn WOOT Produktdaten als JSON zurückgibt, ersetzt WordPress die Anführungszeichen. Dadurch wird das JSON ungültig und der JavaScript-Parser schlägt fehl.
Lösung
Fügen Sie diesen Code in die Datei functions.php Ihres Themes ein, um die Umwandlung der Anführungszeichen für die betroffenen Sprachen zu deaktivieren:
/**
* Fix: Disable typographic quote conversion for AJAX requests
* Resolves WOOT JSON parsing issues in Czech, Slovak, German, French locales
*/
add_action('init', function () {
$locale = get_locale();
$problematic_locales = ['cs_CZ', 'sk_SK', 'de_DE', 'fr_FR'];
if (in_array($locale, $problematic_locales)) {
add_filter('run_wptexturize', '__return_false');
}
});
So funktioniert es
- Ermittelt die aktuelle WordPress-Sprache mit
get_locale() - Prüft, ob die Sprache in der Liste der betroffenen Sprachen steht
- Deaktiviert die Funktion
wptexturize(), die die Anführungszeichen umwandelt - Das JSON bleibt mit gewöhnlichen ASCII-Anführungszeichen gültig
- WOOT kann die Produktdaten korrekt verarbeiten
Alternative Lösung (nur AJAX)
Wenn Sie die Umwandlung der Anführungszeichen nur für AJAX-Anfragen deaktivieren möchten (nicht auf der gesamten Website):
add_action('init', function() {
$locale = get_locale();
$problematic_locales = ['cs_CZ', 'sk_SK', 'de_DE', 'fr_FR'];
if (in_array($locale, $problematic_locales) && wp_doing_ajax()) {
add_filter('run_wptexturize', '__return_false');
}
});
Weitere Sprachen hinzufügen
Wenn dasselbe Problem bei anderen Sprachen auftritt, tragen Sie diese in das Array $problematic_locales ein:
$problematic_locales = ['cs_CZ', 'sk_SK', 'de_DE', 'fr_FR', 'pl_PL', 'hu_HU'];
Überprüfung
Nach dem Einfügen des Codes:
- Browser-Cache leeren
- WordPress-Cache leeren (falls ein Cache-Plugin verwendet wird)
- Die Seite mit der WOOT-Tabelle neu laden
- Browser-Konsole prüfen (F12) – es sollten keine JSON-Fehler erscheinen
- Die Produkte sollten korrekt angezeigt werden
Hinweise
- Diese Korrektur gilt für alle Plugins, die in diesen Sprachen JSON-Antworten verwenden
- Sie wirkt sich nicht auf normale Beitrags- und Seiteninhalte aus
- Gefahrlos einsetzbar – es wird nur die Umwandlung der typografischen Anführungszeichen deaktiviert
- Funktioniert mit allen WordPress-Versionen