Zum Inhalt

Rechtliches mit GermanizedLink zu diesem Abschnitt

Zuletzt geändert am

WooCommerce bringt die Funktionen nicht mit, die für einen Onlineshop in Deutschland vorgeschrieben sind. Diese Lücke schließt Germanized for WooCommerce (vendidero, GPLv3). Die kostenlose Kernversion reicht. Die Pro-Version braucht man nur für PDF-Rechnungen, eine mehrstufige Kasse, eigene Checkboxen, Rechtstext-Generatoren und Lebensmittelkennzeichnung.

Was eingerichtet wirdLink zu diesem Abschnitt

  • Rechtliche Checkboxen an der Kasse: Pflicht-Checkbox für AGB und Widerrufsbelehrung, je nach Produkt weitere für Altersprüfung, Gebrauchtware oder Mängelexemplare.
  • Grundpreise nach Preisangabenverordnung sowie Liefer- und Versandkostenhinweise auf der Produktseite.
  • Rechtstexte als eigene Seiten: Impressum, AGB, Widerrufsbelehrung und Datenschutzerklärung, verknüpft mit den Seiteneinstellungen von WooCommerce und Germanized.
  • Erreichbarkeit: ein Menü „Rechtliches" mit allen vier Seiten im Footer. Rechtlich gefordert ist, dass die Texte von jeder Seite aus ohne Suchen erreichbar sind.
  • Streitbeilegung: Link zur OS-Plattform in Impressum und AGB. Die Angabe „nicht bereit oder verpflichtet" ist für kleinere Shops zulässig, muss aber offengelegt werden.
  • Widerrufsbutton nach EU-Richtlinie 2023/2673.
  • EU-Gewährleistungshinweis, Pflicht seit 27.09.2026, siehe unten.

Platzhalter in den Rechtstexten

Die angelegten Texte enthalten markierte Platzhalter für Handelsregister, Umsatzsteuer-ID und vertretungsberechtigte Personen. Vor dem Livegang müssen sie durch echte, rechtlich geprüfte Angaben ersetzt werden. Der Konfigurations-Assistent sperrt den Shop deshalb zunächst für Besucher.

Einrichtung per WP-CLILink zu diesem Abschnitt

Germanized startet nach der Aktivierung einen eigenen Einrichtungsassistenten. Dessen Schritte lassen sich auch ohne Oberfläche ausführen, so macht es die setup.sh des Konfigurations-Assistenten:

wp eval 'WC_GZD_Install::set_default_settings();'
wp eval 'WC_GZD_Install::create_pages();'
wp eval 'WC_GZD_Install::create_tax_rates();'
# Der Assistent wurde beim Aktivieren vorgemerkt, weil es da noch keine
# Widerrufsseite gab. Jetzt gibt es sie, die Vormerkung kann weg.
wp transient delete _wc_gzd_setup_wizard_redirect
wp transient delete _wc_gzd_activation_redirect

Ohne das Löschen der beiden Transienten landet man beim ersten Aufruf des Backends im Assistenten, obwohl alles eingerichtet ist.

Assistent nach Updates

Nach einem Major-Update von Germanized erscheint der Assistent erneut. Auf einem eingerichteten Shop nicht durchlaufen, er kann Rechtsseiten doppelt anlegen. „Zurück zu WP Admin" wählen.

EU-GewährleistungshinweisLink zu diesem Abschnitt

Seit dem 27.09.2026 müssen Onlineshops, die an Verbraucher verkaufen, vor Vertragsschluss hervorgehoben auf das gesetzliche Gewährleistungsrecht hinweisen, und zwar mit der harmonisierten Mitteilung der EU (Richtlinie (EU) 2024/825, Durchführungsverordnung (EU) 2025/1960 Anhang I, in Deutschland Art. 246a § 1 Abs. 1 Nr. 11 EGBGB). Die Mitteilung ist eine amtliche Grafik, deren Elemente nicht verändert werden dürfen. Online ist die farbige Fassung zu verwenden, lesbar in Standardgröße und mit einem klickbaren Link auf dasselbe Ziel wie der QR-Code, für Deutsch https://europa.eu/youreurope/garantien.

Germanized bringt die Mitteilung mit, schaltet sie aber nicht ein. Die Funktion liegt unter WooCommerce → Einstellungen → Germanized → Preisauszeichnung → EU Gewährleistung. Die mitgelieferte Grafik ist byte-gleich mit der Datei der Kommission, eine eigene Erweiterung für die Grafik ist also nicht nötig. In einer frischen Installation ist die Funktion aus, und die Einstellungen stehen nur in der Datenbank. Eingeschaltet wird sie so, wie es auch die setup.sh des Konfigurations-Assistenten tut:

wp option update woocommerce_gzd_legal_guarantee_enabled yes
wp option update woocommerce_gzd_legal_guarantee_display_locations '["footer","cart","checkout"]' --format=json
wp option update woocommerce_gzd_legal_guarantee_default_display_variant link
wp option update woocommerce_gzd_mail_attach_eu_guarantees '["customer_processing_order","customer_on_hold_order"]' --format=json
Option Wert Bedeutung
woocommerce_gzd_legal_guarantee_enabled yes Funktion an, ab Werk aus
woocommerce_gzd_legal_guarantee_display_locations footer, cart, checkout Anzeige im Footer, im Warenkorb und in der Kasse
woocommerce_gzd_legal_guarantee_default_display_variant link Link „Ihre gesetzlichen Gewährleistungsrechte“, der erste Klick öffnet die Mitteilung
woocommerce_gzd_mail_attach_eu_guarantees customer_processing_order, customer_on_hold_order Mitteilung als PDF-Anhang der Bestellbestätigung
woocommerce_gzd_garan_label_enabled no GARAN-Kennzeichnung für Herstellergarantien über zwei Jahre, nur je Produkt mit Herstellerangaben sinnvoll

Die Darstellung als Link folgt den praktischen Leitlinien der Kommission vom April 2026. Der Hinweis im Backend von Germanized, diese Variante sei „aus rechtlicher Sicht derzeit nicht empfohlen“, stammt aus der Zeit davor. Germanized verschickt auch bei Vorkasse die Bestellbestätigung als customer_processing_order, customer_on_hold_order steht nur vorsorglich in der Liste.

Wo der Hinweis erscheint: im Footer jeder Seite, im Warenkorb, in der Kasse und als PDF-Anhang der Bestellbestätigung. In Warenkorb und Kasse nur, wenn mindestens ein nicht virtuelles Produkt darin liegt, bei gemischten Warenkörben mit „Für körperliche Produkte:“ davor. Kategorie-, Such- und Shopseiten bietet Germanized nicht an, die Leitlinien nennen sie aber.

Was Germanized allein nicht leistet:

  • Der Auslöser ist ein Link auf die PNG-Datei, das Popover ist als role="tooltip" ausgezeichnet und öffnet schon nach einer Sekunde Überfahren mit der Maus. Das widerspricht WCAG 1.4.13, siehe Barrierefreiheit.
  • Der Linktext duzt, der Rest eines gesiezten Shops nicht.
  • Für Screenreader fehlt der Wortlaut der Mitteilung als Alternativtext.
  • Germanized zwingt die Grafik mit width:100% !important in den Bildschirm. Auf 390 px Breite ist die Mitteilung dann nicht mehr lesbar.
  • Auf Produktlisten erscheint nichts.

Ergänzungen dafür: Im Referenzshop stecken sie im Child Theme ospo-storefront, siehe Theme und Frontend. Das Paket des Konfigurations-Assistenten bringt sie stattdessen als eigene Erweiterung „Gewährleistungshinweis“ (ospo-gewaehrleistung, GPL-2.0-or-later) mit, damit sie mit jedem Theme funktionieren. Beide machen dasselbe:

  • Der Auslöser ist ein <button> mit popovertarget und öffnet damit auch ohne JavaScript. Das Popover ist ein role="dialog" mit Überschrift und sichtbarem Knopf „Schließen“. Die Klassen von Germanized bleiben, damit dessen popover.js weiter greift.
  • Beim Öffnen springt der Fokus auf „Schließen“, beim Schließen zurück auf den Auslöser. Escape schließt.
  • Kein Öffnen beim Überfahren (Filter woocommerce_gzd_legal_guarantee_enable_mouseover), Linktext „Ihre gesetzlichen Gewährleistungsrechte“, der vollständige Wortlaut als Alternativtext. Das Bild lädt erst beim Öffnen.
  • Hinweis auf Shop-, Kategorie- und Suchseiten über woocommerce_before_shop_loop und woocommerce_no_products_found.
  • Die Grafik bleibt mindestens 760 px breit und lässt sich im Dialog seitlich scrollen.

Das Child Theme ersetzt das Popover-Template von Germanized per Template-Override, die Erweiterung über den Filter woocommerce_gzd_default_plugin_template. Ein Override im Theme hat Vorrang vor der Erweiterung. Block-Warenkorb und Block-Checkout holen das Markup ebenfalls aus dem PHP-Template, die Ergänzungen greifen dort mit. Im Block-Checkout trägt der Hinweis die Klasse eines Checkout-Schritts und braucht eine eigene CSS-Regel, sonst erscheint er als weiße Schritt-Karte.

Geprüft am 17.10.2026 mit Germanized 4.1.5 im Browser auf dem Desktop und in 390 px Breite, per Tastatur, und mit abgefangenem Versand der Bestellbestätigung (pre_wp_mail): Der Anhang heißt legal_guarantee_notice-de.pdf. Ein Barrierefreiheitstest des ganzen Shops steht noch aus.

FallstrickeLink zu diesem Abschnitt

Widerrufsbutton braucht einen bestimmten Shortcode. Ist der Widerrufsbutton aktiv und mit einer Seite verknüpft, prüft Germanized, ob diese Seite den Formular-Shortcode enthält. Gesucht wird [eu_owb_order_withdrawal_request_form], nicht [revocation_form] (nur der Belehrungstext) und nicht [gzd_complaints] (Streitbeilegung). Fehlt er, bleibt die Funktion unsichtbar, obwohl sie als aktiviert gilt. Der zuverlässigste Indikator ist der Status im Backend: „Valide" oder „Problem gefunden". Für eingeloggte Kunden ohne Bestellung zeigt das Formular statt der Felder bewusst nur einen Hinweis. Zum Testen also eine Bestellung anlegen.

Optionsnamen ohne gzd_. Fast alle Germanized-Optionen beginnen mit woocommerce_gzd_. Ausgerechnet die Rechtsseiten nicht: woocommerce_imprint_page_id, woocommerce_data_security_page_id, woocommerce_terms_page_id, woocommerce_withdraw_from_contract_page_id, woocommerce_shipping_costs_page_id.

Eigener Verschlüsselungsschlüssel. Ohne die Konstante WC_GZD_ENCRYPTION_KEY nutzt Germanized LOGGED_IN_KEY. Werden die WordPress-Salts später rotiert, sind verschlüsselt gespeicherte Werte nicht mehr lesbar. Den Schlüssel deshalb von Anfang an in wp-config.php setzen.

Kasse als Block. Der Checkout von WooCommerce läuft inzwischen als Block (React). PHP-Hooks, die das klassische Kassen-Template verändern, greifen dort nicht. Auf der Referenzinstanz zeigte der Bestellbutton deshalb den Standardtext des Blocks statt „Zahlungspflichtig bestellen", das ist nach § 312j Abs. 3 BGB aber Pflicht. Vor dem Livegang prüfen. Anpassungen am Block-Checkout brauchen eine JavaScript-Integration über @woocommerce/blocks-checkout.

Einstellungs-ReferenzLink zu diesem Abschnitt

Germanized legt rund 280 Optionen mit dem Präfix woocommerce_gzd_ an (Stand Version 4.1). Im Backend liegen sie unter WooCommerce → Einstellungen → Germanized, jedes Modul ist eine Unterseite (&tab=germanized-<modul>&section=<untertab>).

Modul Inhalt
Allgemein Rechtsseiten, Streitbeilegung, Kleinunternehmer, Kasse, Shop, Photovoltaikanlagen, Widerrufsbutton
Preisauszeichnung wo und in welcher Reihenfolge rund 13 Preis- und Infoangaben in 15 Kontexten erscheinen
Steuern Umsatzsteuer, Steuer auf Versand und Gebühren, Differenzbesteuerung
Button-Lösung Kompatibilitätsschalter für Kassen-Templates
Double-Opt-In Bestätigungslink bei Kontoregistrierung
E-Mails welcher Rechtstext an welche der 25 WooCommerce-Mails angehängt wird
Checkboxen 10 vordefinierte Einwilligungs-Checkboxen, je mit Ort und Pflichtstatus

Allgemein im Detail:

Untertab section Kerneinstellungen
Rechtlich relevante Seiten Verknüpfung von AGB, Widerruf, Impressum, Datenschutz, Zahlungs- und Versandarten
Streitbeilegung disputes Status, Text, Prüfung auf [gzd_complaints]
Kleinunternehmer small_business Umsatzsteuerbefreiung nach § 19 UStG
Kasse checkout Anrede, Stornierung und Zahlartwechsel verhindern
Shop shop Warenkorb-Button in Listen, Hinweise zur Echtheit von Bewertungen (Omnibus-Richtlinie)
Photovoltaikanlagen photovoltaic_systems Nullsteuersatz nach § 12 Abs. 3 UStG
Widerrufsbutton withdrawal_button Widerrufsseite, Footer, Prüfung von Gästen, Teilwiderruf, Frist

Preisauszeichnung: Für jede Kombination aus Kontext (Produktseite, Produktliste, Warenkorb, Kasse, E-Mails und weitere) und Angabe (Grundpreis, MwSt.-Hinweis, Versandkosten, Lieferzeit, Hersteller, Sicherheitshinweise, EU-Gewährleistung und weitere) gibt es drei Optionen: display_<kontext>_<angabe>, …_filter für den Ort und …_priority für die Reihenfolge. Das ist zu viel für Einzelfragen.

Was das für einen Assistenten heißtLink zu diesem Abschnitt

Die Einstellungen fallen in drei Gruppen, und jede braucht eine andere Art der Abfrage:

  1. Stammdaten wie Rechtsseiten, Kontaktdaten und Kleinunternehmerstatus: klassische Fragen.
  2. Ja/Nein-Entscheidungen mit Folgetext wie Streitbeilegung, Differenzbesteuerung, Photovoltaik: je nach Antwort weitere Felder.
  3. Massenkonfiguration wie Preisauszeichnung, Zuordnung zu Mails und Orte der Checkboxen: Vorlagen statt Einzelfragen. Der Konfigurations-Assistent bietet dafür „Standard" und „Minimal".