WooCommerce – Einkaufsbutton deaktivieren und mit Anfrageformular ersetzen

von | Sep. 25, 2024 | Allgemein | 3 Kommentare

Schlagwörter: WooCommerce

Voralle im B2B Bereich sieht man immer wieder Online Shops die die Preise von Produkte deaktiviert haben oder dann gibts Webshops wo man bei gewissen Produkte keine Kauffunktion findet sondern eine Kontaktmöglichkeit (Evtl ist das Produkt ausverkauft oder es der Verkäufer benötigt mehr Informationen).

Meistens sieht man in diesen Fällen dann wohl das Produkt und evtl noch den Preis aber man kann das Produkt nicht in den Warenkorb legen – dafür gibts unten ein Formularfeld das man ausfüllen und abschicken kann.

Im heutigen Beitrag möchte ich euch zeigen, wie ihr sowas auch in eurem WooCommerce Shop machen könnt

Video

Kontaktformular

Ich verwende in meinem Beispiel wie immer das Contact Form 7 Kontaktformular aber ihr könnt natürlich auch jedes andere Kontaktformular verwenden – ihr braucht einfach einen Shortcode den ihr dann ins Script einbaut.

In Contact Form 7 – gebe ich im E-Mail Feld noch diesen Shortcode ein [_post_url] – damit wird nämlich in die eMail ein Link eingebaut womit ich sehen kann, von welcher Unterseite/ Produkt diese Anfrage / eMail kommt.

Für alle Produkte deaktivieren

Mit diesem Code hier werden alle Produkte so deaktiviert. Ihr müsst unten nur den Shortcode zum Kontaktformular einbauen un zwar innerhalb der beiden “ Gänsefüsschen.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
add_filter( 'woocommerce_is_purchasable', '__return_false'); // DISABLING PURCHASE FUNCTIONALITY AND REMOVING ADD TO CART BUTTON FROM NORMAL PRODUCTS
 
remove_action('woocommerce_single_variation', 'woocommerce_single_variation', 10); // REMOVING PRICE FROM VARIATIONS
 
remove_action('woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20); // REMOVING ADD TO CART BUTTON FROM VARIATIONS
 
// Add an enquiry form on Woocommerce single product page
add_action( 'woocommerce_single_product_summary', 'single_product_message', 20 );
 
function single_product_message() {
    echo '<p class="woocommerce-message">Send us an enquiry </p>';
	echo do_shortcode('[xxx]'); // füge hier den Shortcode zwischen die '' ein
 
}

Nur gewisse Produkte deaktivieren

Möchte man diese Funktion nur bei einzelnen Produkte aktiviert haben aber nicht bei allen, dann sucht die Produkt ID und gebt sie unten im Array ein. Dann könnt ihr noch entscheiden ob ihr die Preise verstecken wollt oder nicht (Wenn nicht löscht diese „woocommerce_single_product_summary“ Zeile aus dem Script). Und am Schluss müsst ihr noch euren Kontaktformular Shortcode einbauen.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// hier die produkt id der produkt eingeben, wo die kauffunktion deaktiviert werden soll
$disabled_products = array(xx,yy,zz); 
 
 
add_filter( 'woocommerce_is_purchasable', 'disable_purchase_for_specific_products', 10, 2 );
function disable_purchase_for_specific_products( $is_purchasable, $product ) {
    global $disabled_products;
 
    if ( in_array( $product->get_id(), $disabled_products ) ) {
        return false;
    }
    return $is_purchasable;
}
 
add_action('wp', 'remove_variation_actions_for_specific_products');
function remove_variation_actions_for_specific_products() {
    global $disabled_products;
 
    if ( is_product() && in_array( get_the_ID(), $disabled_products ) ) {
        remove_action('woocommerce_single_variation', 'woocommerce_single_variation', 10); 
        remove_action('woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20); 
	remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 ); //preis verstecken
    }
}
 
// Mitteilung anpassen
add_action( 'woocommerce_single_product_summary', 'single_product_message', 20 );
function single_product_message() {
    global $disabled_products;
 
    if ( in_array( get_the_ID(), $disabled_products ) ) {
        echo '<p class="woocommerce-message">Send us an enquiry</p>';
        echo do_shortcode('[xxx]'); // füge hier den Shortcode zwischen die '' ein
    }
}

3 Kommentare

  1. irgendlink

    Ich habe das Kontaktformular auskommentiert und in
    echo ‚Send us an enquiry‘
    einen Mailtolink eingefügt. Was müsste ich denn schreiben, dass im Betreff auch der Produktname genannt wird?
    Anfrage per Mail
    Hab Dank für die tolle Anleitung

    Antworten
  2. irgendlink

    Tschuldigung, der Code im Kommentar wurde umgewandelt. Wie muss man bei Verwendung von html mailto Link an Stelle eines Kontaktformulars die Produkt-URL hinter subject= einfügen? Einfach als Shortcode?

    Antworten
    • Eric-Oliver Mächler

      macht nichts – habe beim freischalten dein code eh zerstört – äxgüsi

      zu deiner frage – nein da musst du ein wenig mit php coden

      entweder machst du dir da eine eigener shortcode oder du nimmste in plugin mit dem du php abspielen kannst.
      du fragst zuerst mit php den seitentitel ab und erstellst dann einen link und den baust du dann ein – hoffe du vere

      Hier mein kleiner Vorschlag https://codepen.io/chefblogger/pen/KwPzJKo

      Antworten

Einen Kommentar abschicken

Du kannst auf Fediverse-Profile verlinken, indem du fl:@benutzername in deinem Kommentar eingibst.

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert