Artikel

Gutscheinkarten als Custom Product Type in WooCommerce erstellen und versenden

Allgemein

Gutscheinkarten sind eine großartige Möglichkeit, Kunden eine flexible Geschenkoption zu bieten und gleichzeitig den Umsatz zu steigern. In WooCommerce lassen sich Gutscheinkarten als benutzerdefinierter Produkttyp erstellen, der eine nahtlose Integration in den bestehenden Shop ermöglicht. In diesem Beitrag zeige ich Schritt für Schritt, wie Sie einen benutzerdefinierten Produkttyp für Gutscheinkarten erstellen und wie der Versand der Gutscheine automatisiert erfolgt, sobald die Bestellung bezahlt ist.


Teil 1: Erstellen eines benutzerdefinierten Produkttyps für Gutscheinkarten

WooCommerce unterstützt von Haus aus Produkttypen wie „Einfaches Produkt“ oder „Variable Produkte“. Für Gutscheinkarten benötigen wir jedoch einen eigenen Produkttyp. So geht’s:

Produkttyp registrieren

Der benutzerdefinierte Produkttyp wird über einen Filter in WooCommerce hinzugefügt:

add_filter('product_type_selector', 'add_gift_card_product_type');
function add_gift_card_product_type($types) {
    $types['my_gift_card'] = __('Gutscheinkarte', 'woocommerce');
    return $types;
}

Produkttyp-Klasse definieren

Für die Verwaltung der spezifischen Eigenschaften der Gutscheinkarten wird eine eigene Klasse erstellt:

add_action('init', 'register_gift_card_product_type');
function register_gift_card_product_type() {
    class WC_Product_Gift_Card extends WC_Product {
        protected string $product_type = 'my_gift_card';

        public function __construct($product) {
            parent::__construct($product);
        }

        public function get_type() {
            return $this->product_type;
        }
    }
}

Custom Fields hinzufügen

Die Gutscheinkarten benötigen Felder wie den Gutscheinwert:

add_action('woocommerce_product_data_panels', 'add_gift_card_custom_fields');
function add_gift_card_custom_fields() {
    echo '<div id="gift_card_options" class="panel woocommerce_options_panel hidden">';
    woocommerce_wp_text_input(array(
        'id'          => '_gift_card_value',
        'label'       => __('Gutscheinwert', 'woocommerce'),
        'type'        => 'number',
        'desc_tip'    => true,
        'custom_attributes' => array(
            'step' => 'any',
            'min'  => '0',
        ),
    ));
    echo '</div>';
}

Speichern der Felder

add_action('woocommerce_process_product_meta', 'save_gift_card_meta');
function save_gift_card_meta($post_id) {
    if (isset($_POST['_gift_card_value'])) {
        update_post_meta($post_id, '_gift_card_value', sanitize_text_field($_POST['_gift_card_value']));
    }
}

Teil 2: Automatischer Versand der Gutscheinkarten nach Zahlungseingang

Um den Gutschein nach Zahlungseingang automatisch zu versenden, nutzen wir den WooCommerce-Hook woocommerce_order_status_processing oder woocommerce_order_status_completed (je nach Workflow):

Versand-Hook hinzufügen

Der Hook wird registriert, um den Gutscheinversand auszulösen, sobald der Zahlungsstatus entsprechend gesetzt ist:

add_action('woocommerce_order_status_completed', 'send_gift_card_on_payment');
function send_gift_card_on_payment($order_id) {
    $order = wc_get_order($order_id);

    foreach ($order->get_items() as $item) {
        $product = wc_get_product($item->get_product_id());

        // Prüfen, ob Produkt ein Gutschein ist
        if ($product->get_type() === 'my_gift_card') {
            $voucher_value = get_post_meta($product->get_id(), '_gift_card_value', true);

            // Gutschein erstellen
            $coupon_code = 'GC-' . strtoupper(wp_generate_password(10, false));
            $coupon = new WC_Coupon();
            $coupon->set_code($coupon_code);
            $coupon->set_discount_type('fixed_cart');
            $coupon->set_amount($voucher_value);
            $coupon->set_individual_use(true);
            $coupon->set_usage_limit(1);
            $coupon->set_date_expires(new WC_DateTime('+1 year'));
            $coupon->save();

            // E-Mail an den Kunden senden
            $email_body = "<p>Vielen Dank für Ihre Bestellung!</p>";
            $email_body .= "<p>Ihr Gutschein-Code lautet: <strong>$coupon_code</strong></p>";
            $email_body .= "<p>Wert: " . wc_price($voucher_value) . "</p>";
            $email_body .= "<p>Einlösbar bis: " . $coupon->get_date_expires()->date('Y-m-d') . "</p>";

            wp_mail($order->get_billing_email(), 'Ihr Gutschein ist da!', $email_body);
        }
    }
}

Test und Anpassung

  • Testen Sie den Workflow mit einer Testbestellung.
  • Stellen Sie sicher, dass der Gutschein korrekt generiert und an die Kunden-E-Mail gesendet wird.

Mit diesen Schritten können Sie Gutscheinkarten als benutzerdefinierten Produkttyp in WooCommerce erstellen und den Versand bei Zahlungseingang automatisieren. Dieses Setup bietet Flexibilität und lässt sich leicht an die individuellen Anforderungen Ihres Shops anpassen. Probieren Sie es aus und steigern Sie die Attraktivität Ihres Angebots mit flexiblen Gutscheinkarten!

0 Kommentare