Direkt zum Hauptinhalt

Snippet - Wenn Kunde ein explicites Produkt in Besitz hat ist dieses nicht mehr kaufbar

Beschreibung:

Wenn ein Kunde ein Produkt aus einer Kategorie im Besitz hat, sprich schon mal gekauft hat, kann er diesen Artikel nicht nochmals erwerben. Die menge Beschreibungsfelder etc. und in den Warenkorb werden via CSS ausgeblendet.
Auch hier kann wieder entschieden werden, welche Sachen angezeigt werden sollen.
Was nicht gebraucht wird, löschen oder auskommentieren.

Code:

// Besitzprüfung + Hinweis + optional Kauf verhindern
add_action('woocommerce_before_single_product', function() {
    if (!is_user_logged_in()) {
        echo '<div style="padding:10px;background:#ffeeba;border-left:5px solid #f0ad4e;margin-bottom:15px;">
                🔒 Du bist nicht eingeloggt. Eine Besitzprüfung ist nicht möglich.
              </div>';
        return;
    }

    global $product;
    $user_id = get_current_user_id();
    $product_id = $product->get_id();
    $owns_product = wc_customer_bought_product('', $user_id, $product_id);
    $has_category = has_term('Homepagevorlagen', 'product_cat', $product_id);

    if ($owns_product) {
        echo '<div style="padding:10px;background:#d4edda;border-left:5px solid #28a745;margin-bottom:15px;">
                ✅ Du besitzt dieses Produkt bereits.
              </div>';

        if ($has_category) {
            echo '<div style="padding:10px;background:#fff3cd;border-left:5px solid #ffeeba;margin-bottom:15px;">
                    🛑 Du besitzt dieses Produkt bereits und es gehört zur Kategorie „Homepagevorlagen“. Ein erneuter Kauf ist nicht möglich.
                  </div>';

            // Dynamisch CSS einfügen, um Kaufbereich auszublenden
            add_action('wp_head', function() {
                echo '<style>
                    body.woocommerce.single-product .cart,
                    body.woocommerce.single-product .quantity,
                    body.woocommerce.single-product form.cart {
                        display: none !important;
                    }
                </style>';
            });
        }
    } else {
        echo '<div style="padding:10px;background:#f8d7da;border-left:5px solid #dc3545;margin-bottom:15px;">
                ❌ Du besitzt dieses Produkt nicht.
              </div>';
    }
});