Zum Inhalt springen

B2B catalog mode

Der Katalogmodus verwandelt den Shop in einen Katalog ohne Kaufmöglichkeit. Verbergen Sie Preise, ersetzen Sie Buttons durch Meldungen oder leiten Sie zu einer Angebotsanfrage weiter. Konzipiert für B2B-Shops mit individueller Preisgestaltung.

Gehen Sie zu Polski > Module und aktivieren Sie Katalogmodus (Modulschlüssel catalog_mode). Die Modultabelle listet derzeit nur die Module des kostenlosen Plugins auf. Fehlt die Zeile, setzen Sie catalog_mode in der Option polski_modules auf true. Das Modul selbst hat keinen Einstellungsbildschirm. Die folgenden Optionen liegen in der Option polski_catalog, und in dieser Version schreibt sie nichts, weder ein Bildschirm im Backend noch die Route PUT /wp-json/polski-pro/v1/settings, Sie müssen die Option also direkt setzen.

Einstellung Datenbankoption Standardwert Beschreibung
Katalogmodus aktivieren polski_catalog Nein Aktiviert den Katalogmodus
Preise verbergen polski_catalog_hide_prices Ja Entfernt die Preisanzeige
Warenkorb-Button verbergen polski_catalog_hide_cart Ja Entfernt den Button “In den Warenkorb”
Ersatztext für den Preis polski_catalog_price_text "Zapytaj o cenę" Anstelle des Preises angezeigter Text
Produkthinweis polski_catalog_notice "" Auf der Produktseite angezeigter Hinweis
Zu RFQ weiterleiten polski_catalog_redirect_rfq Nein Leitet zum Formular für die Angebotsanfrage weiter
Bedingter Modus polski_catalog_conditional all all, guests, roles

Der Katalogmodus kann aktiv sein:

  • Für alle (all) - jeder sieht einen Katalog ohne Preise
  • Nur für Gäste (guests) - angemeldete Kunden sehen Preise und können kaufen
  • Für ausgewählte Rollen (roles) - Katalog nur für ausgewählte WordPress-Rollen aktiv

Der bedingte Modus “Nur für Gäste” ist in B2B-Modellen beliebt, bei denen der Großhändler vor der Preisfreigabe eine Kontoregistrierung verlangt.

// Przykład: własna logika warunkowa
add_filter('polski_pro/catalog/is_active', function (bool $is_active): bool {
// Wyłącz tryb katalogowy dla klientów z co najmniej 5 zamówieniami
if (is_user_logged_in()) {
$order_count = wc_get_customer_order_count(get_current_user_id());
if ($order_count >= 5) {
return false;
}
}
return $is_active;
});

Das Modul klinkt sich in den Filter woocommerce_get_price_html ein und ersetzt das Preis-HTML durch den konfigurierten Ersatztext.

/**
* Filtruje tekst zastępczy ceny w trybie katalogowym.
*
* @param string $replacement Tekst zastępczy
* @param \WC_Product $product Obiekt produktu
*/
apply_filters('polski_pro/catalog/price_replacement', string $replacement, \WC_Product $product): string;

Beispiel - unterschiedlicher Text für Kategorien:

add_filter('polski_pro/catalog/price_replacement', function (string $replacement, \WC_Product $product): string {
if (has_term('premium', 'product_cat', $product->get_id())) {
return '<span class="price-inquiry">Cena ustalana indywidualnie</span>';
}
return $replacement;
}, 10, 2);

Das Modul verwendet den Filter woocommerce_is_purchasable, um die Kaufmöglichkeit zu blockieren:

/**
* Filtruje, czy produkt jest dostępny do zakupu w trybie katalogowym.
*
* @param bool $purchasable Czy produkt jest dostępny do zakupu
* @param \WC_Product $product Obiekt produktu
*/
apply_filters('polski_pro/catalog/is_purchasable', bool $purchasable, \WC_Product $product): bool;

Beispiel - Kauf ausgewählter Produkte erlauben:

add_filter('polski_pro/catalog/is_purchasable', function (bool $purchasable, \WC_Product $product): bool {
$always_purchasable = [101, 102, 103]; // ID produktów zawsze dostępnych
if (in_array($product->get_id(), $always_purchasable, true)) {
return true;
}
return $purchasable;
}, 10, 2);

Wenn die Option polski_catalog_notice gesetzt ist, wird auf der Einzelproduktseite ein Hinweis angezeigt, der den Kunden über den Katalogmodus informiert.

Beispielhinweis:

Um den Preis dieses Produkts zu erfahren, kontaktieren Sie unser Vertriebsteam oder füllen Sie das Formular für die Angebotsanfrage aus.

Wenn die Option polski_catalog_redirect_rfq aktiviert ist, leitet der Ersatz-Button auf der Produktseite zum Formular für die Angebotsanfrage weiter (RFQ-Modul). Die Integration umfasst:

  1. Button “Nach Preis fragen” anstelle von “In den Warenkorb”
  2. Automatische Übergabe der Produkt-ID an das RFQ-Formular
  3. Vorausfüllen des Produktnamens im Formular
  4. Rückkehr zum Produkt nach dem Absenden der Anfrage

Damit die Integration funktioniert, müssen beide Module - Katalog und RFQ - aktiv sein.

Neben den Preisen und dem Warenkorb-Button verbirgt das Modul automatisch:

Element WooCommerce-Hook Effekt
Button “In den Warenkorb” woocommerce_is_purchasable Produkt als nicht kaufbar markiert
Preis woocommerce_get_price_html Preis-HTML durch Text ersetzt
Warenkorb-Symbol im Header polski_pro/catalog/hide_cart_icon Verbirgt das Mini-Warenkorb-Symbol
Warenkorbseite template_redirect Weiterleitung von /cart/ zur Startseite
Kassenseite template_redirect Weiterleitung von /checkout/ zur Startseite

Nicht alle Elemente müssen gleichzeitig verborgen werden. Jede Option kann unabhängig aktiviert oder deaktiviert werden. Zum Beispiel:

  • Preise verbergen, aber den Warenkorb-Button behalten (Kunde kauft zum “unbekannten Preis” - Kontakt nach der Bestellung)
  • Warenkorb-Button verbergen, aber Preise anzeigen (Kunde sieht Preise, muss aber für den Kauf anfragen)
  • Alles verbergen (voller Katalogmodus)

Im Produkteditor gibt es keinen Tab für den Katalogmodus. Das Verhalten je Produkt wird aus drei Produkt-Meta-Schlüsseln gelesen: _polski_catalog_enabled, _polski_catalog_hide_price und _polski_catalog_hide_cart. Eine Variante ohne eigenen Wert übernimmt ihn vom übergeordneten Produkt. Nichts im Backend schreibt diese Schlüssel, Sie müssen sie also direkt im Produkt-Meta setzen.

/**
* Filtruje kategorie wykluczone z trybu katalogowego.
*
* @param array $excluded_categories Tablica ID kategorii
*/
apply_filters('polski_pro/catalog/excluded_categories', array $excluded_categories): array;

Beispiel:

add_filter('polski_pro/catalog/excluded_categories', function (array $excluded_categories): array {
$excluded_categories[] = 15; // "Akcesoria" - zawsze dostępne do zakupu
$excluded_categories[] = 28; // "Outlet"
return $excluded_categories;
});

Das Modul fügt <body> CSS-Klassen hinzu, um das Styling zu erleichtern:

Klasse Wann hinzugefügt
polski-catalog-mode Der Katalogmodus ist aktiv
polski-catalog-prices-hidden Die Preise sind verborgen
polski-catalog-cart-hidden Der Warenkorb-Button ist verborgen

CSS-Beispiel:

.polski-catalog-mode .price {
display: none; /* Dodatkowe ukrycie ceny, jeśli motyw nie respektuje filtra */
}
.polski-catalog-mode .single_add_to_cart_button {
background-color: #0073aa;
content: "Zapytaj o cenę";
}

Preise werden trotz aktiviertem Katalogmodus weiterhin angezeigt Einige Themes verwenden nicht standardisierte Methoden zur Preisanzeige und umgehen dabei den Filter woocommerce_get_price_html. Verwenden Sie die CSS-Klassen .polski-catalog-prices-hidden .price { display: none; } als Absicherung.

Kunde kann das Produkt über eine direkte URL in den Warenkorb legen Das Modul blockiert dies auf der Ebene des Filters woocommerce_is_purchasable. Wenn das Problem weiterhin besteht, prüfen Sie, ob ein anderes Plugin diesen Filter mit höherer Priorität überschreibt.

Der bedingte Modus funktioniert mit Cache nicht richtig Caching-Plugins können unabhängig vom Anmeldestatus die zwischengespeicherte Version ausliefern. Konfigurieren Sie das Caching-Plugin so, dass es den Cache für angemeldete und für gast-Benutzer trennt.

Diese Seite dient ausschließlich Informationszwecken und stellt keine Rechtsberatung dar. Konsultieren Sie vor der Umsetzung einen Anwalt. Polski for WooCommerce ist Open-Source-Software (GPLv2), die ohne Gewährleistung bereitgestellt wird.