Unerwünschte Käufer in WooCommerce blockieren

Manche Kunden verursachen im Online-Shop immer wieder Probleme – etwa durch unbezahlte Bestellungen oder bekannte Fake-Adressen. WooCommerce bietet dafür standardmäßig keine Sperrfunktion. Mit einem kleinen PHP-Snippet lässt sich jedoch gezielt verhindern, dass bestimmte Adressen Bestellungen abschließen. In diesem Beitrag erfahren Sie, wie das funktioniert und wie Sie die Lösung einfach in Ihren Shop integrieren.

Warum problematische Käufer im Shop blockieren sinnvoll ist

In vielen WooCommerce-Shops kommt es vor, dass einzelne Kunden wiederholt Schwierigkeiten verursachen. Dazu gehören etwa unbezahlte Bestellungen, falsche Lieferadressen oder bekannte Problemkunden. Manchmal werden auch wiederholt Fake-Bestellungen durch Bots ausgelöst.

Eine direkte Sperrfunktion bietet WooCommerce standardmäßig nicht. Shopbetreiber greifen deshalb häufig zu kostenpflichtigen WordPress-Plugins. Dabei lässt sich das Problem oft deutlich einfacher lösen.

Mit einem kurzen PHP-Snippet können Sie bestimmte Adressen bereits im Checkout erkennen und automatisch blockieren. Der Bestellvorgang wird in diesem Fall abgebrochen und der Kunde erhält eine entsprechende Fehlermeldung.

Ein Snippet in WordPress ist ein kleiner Code-Abschnitt, der eine bestimmte Funktion oder Änderung in Ihrer Website ergänzt. Meist handelt es sich um PHP-Code, der das Verhalten von WordPress, Plugins oder Themes erweitert, ohne dass ein eigenes Plugin entwickelt werden muss.

So funktioniert das WooCommerce-Snippet

Das Snippet nutzt den WooCommerce-Hook woocommerce_after_checkout_validation. Dieser Hook wird ausgeführt, nachdem der Kunde seine Daten im Checkout eingegeben hat – jedoch noch bevor die Bestellung gespeichert wird. Der Code prüft die eingegebene Adresse auf eine Kombination aus Straße und Postleitzahl. Dadurch lässt sich eine Adresse deutlich genauer identifizieren als nur anhand der Straße allein.

Stimmt die eingegebene Rechnungs- oder Lieferadresse mit einer definierten Kombination aus Straße und PLZ überein, wird der Bestellvorgang abgebrochen und eine Fehlermeldung angezeigt.

Dabei berücksichtigt das Snippet mehrere Punkte:

  • Es prüft sowohl Rechnungsadresse als auch Lieferadresse.
  • Die Groß- und Kleinschreibung wird ignoriert.
  • Die Straße wird als Teilstring geprüft (z. B. „Musterstraße“ oder „Musterstraße 12“).
  • Zusätzlich muss die Postleitzahl exakt übereinstimmen, damit die Adresse blockiert wird.

Durch die Kombination aus Straße und PLZ wird verhindert, dass gleichnamige Straßen in anderen Orten versehentlich blockiert werden.

WooCommerce Snippet: Straße und PLZ kombiniert blockieren

/*
 * Snippet: Käufer anhand von Straße und PLZ blockieren
 * Getestet mit WooCommerce 10.6
 */

function woocommerce_adresse_blockieren( $data, $errors ) {

    // Kombination aus Straße und PLZ
    $blocked_addresses = array(
        array(
            'street'   => 'Musterstraße',
            'postcode' => '12345'
        ),
        array(
            'street'   => 'Testweg',
            'postcode' => '54321'
        )
    );

    // Checkout-Daten auslesen
    $billing_street  = strtolower( $data['billing_address_1'] ?? '' );
    $shipping_street = strtolower( $data['shipping_address_1'] ?? '' );

    $billing_postcode  = $data['billing_postcode'] ?? '';
    $shipping_postcode = $data['shipping_postcode'] ?? '';

    foreach ( $blocked_addresses as $blocked ) {

        $street   = strtolower( $blocked['street'] );
        $postcode = $blocked['postcode'];

        if (
            ( str_contains( $billing_street, $street ) && $billing_postcode === $postcode ) ||
            ( str_contains( $shipping_street, $street ) && $shipping_postcode === $postcode )
        ) {
            $errors->add(
                'validation',
                __( 'Es tut uns leid, wir können Ihre Bestellung nicht bearbeiten. Bitte kontaktieren Sie unseren Support.', 'woocommerce' )
            );
            return;
        }
    }
}

add_action( 'woocommerce_after_checkout_validation', 'woocommerce_adresse_blockieren', 10, 2 );

Code einfügen – zwei Möglichkeiten

Option 1 – Code Snippets Plugin (für Einsteiger empfohlen)

Diese Variante ist besonders sicher, da Sie keine Theme-Dateien bearbeiten müssen.

  1. Das Plugin Code Snippets im WordPress-Pluginverzeichnis installieren.
  2. Plugin aktivieren.
  3. Im Adminbereich Snippets → Neu hinzufügen wählen.
  4. Den PHP-Code einfügen und das PHP-Snippet aktivieren.

Option 2 – Code per FTP einfügen in functions.php des Child-Themes (für Fortgeschrittene)

Wenn Sie direkten Zugriff auf die Dateien Ihrer Website haben, können Sie das Snippet auch per FTP in die functions.php des Child-Themes einfügen.

  1. Mit einem FTP-Programm (z. B. FileZilla) mit Ihrem Webserver verbinden.
  2. Zum Ordner Ihrer WordPress-Installation navigieren:
    /wp-content/themes/child-theme/
  3. Die Datei functions.php auf Ihren Computer herunterladen.
  4. Vor der Bearbeitung eine Sicherheitskopie der Datei anlegen, damit Sie sie im Fehlerfall schnell wiederherstellen können.
  5. Den PHP-Code am Ende der Datei einfügen und speichern.
  6. Die Datei anschließend wieder auf den Server hochladen und die vorhandene Datei überschreiben.

Wichtig:
Fügen Sie den Code ausschließlich in die functions.php des Child-Themes ein. Änderungen im Parent-Theme würden bei einem Theme-Update überschrieben werden.

Gesperrte Adressen individuell anpassen

Die Liste der gesperrten Adressen lässt sich jederzeit erweitern. Jede Adresse besteht aus einer Kombination aus Straße und Postleitzahl. Wenn Sie eine weitere Adresse blockieren möchten, fügen Sie einfach einen neuen Eintrag hinzu.

$blocked_addresses = array(
    array(
        'street'   => 'Musterstraße',
        'postcode' => '12345'
    ),
    array(
        'street'   => 'Testweg',
        'postcode' => '54321'
    ),
    array(
        'street'   => 'Beispielstraße',
        'postcode' => '01999'
    ),
    array(
        'street'   => 'Problemgasse',
        'postcode' => '88999'
    )
);

Fazit: Problematische Bestellungen einfach verhindern

Mit einem kleinen PHP-Snippet lässt sich WooCommerce schnell um eine praktische Sperrfunktion erweitern. Problematische Bestellungen werden direkt im Checkout erkannt und automatisch blockiert.

Durch die Kombination aus Straße und Postleitzahl können Adressen besonders präzise gefiltert werden. Gleichzeitig bleibt die Lösung schlank, da kein zusätzliches Plugin installiert werden muss.

Gerade für kleinere WooCommerce-Shops ist diese Methode eine einfache und effektive Möglichkeit, unerwünschte Bestellungen zu vermeiden.

Möchten Sie weitere Käufer blockieren, können Sie dies auch über die E-Mailadresse tun. Eine entsprechende Anleitung finden Sie im Artikel WooCommerce: Bestellungen bestimmter E-Mail-Adressen verhindern.

Schreibe einen Kommentar