von
Rechtliche Checkboxen verwalten

WooCommerce Germanized 2.0 ist ein Major Update von Germanized. Dieses Update führt insbesondere ein neues Feature ein: Eine Oberfläche für die Verwaltung deiner rechtlichen Checkboxen. Damit ist es dir nun möglich, deine Checkboxen einfach anzupassen, die Sortierung zu ändern und für Nutzer der Pro-Version: Neue Checkboxen anzulegen oder zu löschen.

Die Oberfläche haben wir perfekt in WooCommerce eingebettet und uns an der bereits bekannten Oberfläche zur Verwaltung der Versandzonen orientiert. Per Drag & Drop lassen sich deine verschiedenen Checkboxen sortieren. Mit einem Klick auf die jeweilige Box, kannst du dessen Attribute anpassen und die Checkbox auf Wunsch deaktivieren. So lässt sich die Beschriftung, eine etwaige Fehlermeldung und die Orte, an denen die Checkbox auftauchen soll einfach anpassen.

Technische Details

Wir möchten an dieser Stelle auch ein paar technische Details hervorheben, um Nutzern, die vorher Anpassungen an unserem alten System vorgenommen haben, eine Hilfestellung für die Kompatibilität mit dem neuen Feature zu geben.

Die Checkboxen werden allesamt mit Hilfe der Funktion wc_gzd_register_legal_checkbox registriert und können mit Hilfe von wc_gzd_get_legal_checkbox abgerufen werden. Dafür ist jeweils eine eindeutige ID (bzw. der Identifier) notwendig. Die jeweilige ID der Checkbox findest du beim Bearbeiten im Feld „Id“ (kann nicht bearbeitet werden). Rückgabe ist (falls die ID gefunden wird) eine Instanz der Klasse WC_GZD_Legal_Checkbox.

Folgende Funktionen sind mit der neuen Implementierung überflüssig und wurden als deprecated markiert:

  • wc_gzd_get_legal_text_error
  • wc_gzd_get_legal_text_digital
  • wc_gzd_get_legal_text_digital_error
  • wc_gzd_get_legal_text_service
  • wc_gzd_get_legal_text_service_error

Auch alte Filter wie z.B.:

  • woocommerce_gzd_legal_text
  • woocommerce_gzd_legal_error_text
  • woocommerce_gzd_legal_digital_text
  • woocommerce_gzd_legal_digital_error_text
  • woocommerce_gzd_legal_service_text
  • woocommerce_gzd_legal_service_error_text
  • woocommerce_gzd_legal_text_parcel_delivery

werden entsprechend nicht mehr funktionieren. Ihr solltet diese Funktionen und Filter also nicht mehr verwenden und stattdessen Anpassungen über unsere neue Implementierung vornehmen.

Templates

Als globales Template für die rechtl. Checkboxen kommt das Template woocommerce-germanized/templates/checkboxes/default.php zum Einsatz. Dieses Template kann (wie jedes andere auch) in einem Child-Theme überschrieben werden (mein-child/woocommerce-germanized/checkboxes/default.php). Für die Checkboxen kann auch ein individuelles Template vergeben werden. Das ist bei der allg. rechtl. Checkbox (für AGB, Widerrufsbelehrung und Datenschutzbestimmungen) der Fall. Hier verwenden wir weiterhin das Template checkout/terms.php. Die anderen Checkboxen haben kein separates Template mehr und verwenden alle das Standard-Template.

Anpassungen via Code vornehmen

Du kannst über Filter bzw. Actions weiterhin Anpassungen an den Checkboxen vornehmen. Beispielsweise kannst du folgendermaßen Anpassungen an der Beschriftung (label) der allg. rechtl. Checkbox vornehmen:

add_action( 'woocommerce_gzd_registered_legal_checkboxes', 'my_child_theme_adjust_checkboxes', 10 );

function my_child_theme_adjust_checkboxes() {
    if ( $checkbox = wc_gzd_get_legal_checkbox( 'terms' ) ) {
        $checkbox->set_label( 'My new label' );
    }
}

Damit wird die Beschriftung der allg. rechtl. Checkbox auf „My new label“ geändert (unabhängig davon, was über die UI hinterlegt wurde). Natürlich können solche Anpassungen auch zu anderen Zeitpunkten (z.B. beim Laden des Checkouts o.ä.) vorgenommen werden, indem ihr eure Anpassungen per add_action an einen anderen Hook anhängt. Eine Übersicht der existierenden Methoden der Klasse WC_GZD_Legal_Checkbox findest du unter woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php

Ablauf

Folgendermaßen funktioniert die Ausgabe und Validierung der rechtl. Checkboxen. Zum Zeitpunkt des init-Hooks von WordPress werden die Checkboxen registriert und geladen. Anschließend werden zu anderen Hooks spezielle Checkboxen (je nach Ort) ausgegeben. Für den Checkout verwenden wir den WooCommerce Hook woocommerce_review_order_after_payment um die Checkboxen auszugeben. Dabei werden alle Checkboxen durchlaufen und nur die ausgegeben, die für die Kasse registriert wurden. Über den Hook woocommerce_after_checkout_validation wird die Validierung der Checkboxen angestoßen. Dafür wird wieder über die Checkboxen iteriert und geprüft, ob die Checkbox validiert werden muss und falls ja, ob der Benutzer die Checkbox angehakt hat. Falls nicht, wird die hinterlegte Fehlermeldung ausgegeben.

Spezielle Checkboxen (wie z.B. die Paketdienstleister-Checkbox) benötigen zusätzliche Prüfungen vor der Ausgabe (z.B. ob die Checkbox für die gewählte Versandmethode angezeigt und validiert werden soll oder nicht). Dafür werden via AJAX beim (nach-)laden der Kasse weitere Prüfungen hinzugefügt und die Checkbox, je nach Ergebnis, eingeblendet bzw. ausgeblendet.

WPML User

Nutzer des WPML-Plugins, müssen u.U. die Übersetzung einiger Strings per WPML String Übersetzung anpassen, da sich die Optionen in der Datenbank für unsere Beschriftungen der Checkboxen verändert haben. Dafür solltet ihr nach dem String „admin_texts_woocommerce_gzd_legal_checkboxes_settings“ filtern. Darin sind alle neuen Strings für die Checkboxen (Beschriftungen – label, Fehlermeldungen – error_message etc.) enthalten. Bitte achtet darauf lediglich die „echten“ Texte zu übersetzen – andere Optionen wie z.B. „no“ oder „yes“ sollten nicht übersetzt werden, da diese nicht im Frontend auftauchen.

Achtung! Ihr solltet wirklich nur die Beschriftung und Fehlermeldung übersetzen. Alle andere Optionen sollten nicht übersetzt werden, da das Plugin u.U. Übersetzungen erhält, die die Software nicht erwartet