Übergeben Sie die gewählten Produkt-Varianten, Daten in Kontakt-Formular 7-Anfrage-Formular

Mit WooCommerce nutze ich Contact Form 7 und Produkt Info Anfordern plugins hinzufügen, um eine form in einem einzelnen Produkt-Seiten, da brauche ich eine Funktionalität, die es Benutzern ermöglichen, um eine Anfrage schicken Anfrage über Produkte (dachte einfach Kontakt-Formular).

Können Sie verstehen, sehen Sie dieses Bild:

Übergeben Sie die gewählten Produkt-Varianten, Daten in Kontakt-Formular 7-Anfrage-Formular

Alle mein Produkt sind variable Produkt mit Variationen (von Parametern).

Gibt es eine Möglichkeit zum abrufen der ausgewählten Varianten durch den Kunden und senden Sie es per contact form 7?

Beispiel :

Benutzer wählen Sie die Farbe schwarz und Größe s, dann füllen Sie das Formular aus, wenn Sie die E-Mail senden, zusätzlich zu Erhalten den klassischen Informationen (name, E-Mail-ecc..) erhalte ich auch das Attribut ausgewählt (in diesem Fall black und s)

  • Hi LoicTheAztec, zunächst alle danken Ihnen sehr viel. Ich versuchen Sie, und befolgen Sie alle Schritte, aber wenn ich füllen Sie das Formular habe ich nicht erhalten, eine variation in der mail. Ich add [text your-Produkt-Klasse:product_details] in der Registerkarte Modul und auch die Produkt: [Ihr Produkt] in der Registerkarte E-mail.
  • Deine Lösung ist großartig, es ist genau das, was Sie suchen, aber es funktioniert nicht mit woocommerce 3.5.4, das Feld „[text your-Produkt-Klasse: product_details]“ erscheint nicht in der form. Es wäre möglich, um eine Anpassung für die version. Danke.
InformationsquelleAutor emiliano | 2017-02-10



One Reply
  1. 2

    AKTUALISIERT: Hinzugefügt WC 3+ Kompatibilität

    Habe ich es getestet, und es wird nicht senden Sie keine Daten bezüglich der gewählten Variationen, denn es ist nur die Ausgabe des ausgewählten Kontakt-Formular-add-to-cart-button (in den einzelnen Produkte-Seiten). Zusätzlich dieses plugin wurde nicht aktualisiert, da mehr als 2 Jahre, es ist also irgendeine Art von überholt.

    DIE GUTE NEUE: EINE FUNKTIONIERENDE LÖSUNG

    Ich habe festgestellt, dass dies im Zusammenhang beantworten: Produkt-Name WooCommerce in Contact Form 7

    Er erklärt, wie ein contact form 7 shortcode in einem Produkt-Registerkarte und Anzeige der gewählten Produkt-Titel in der E-Mail.

    Also von dieser Antwort, die ich umgesetzt haben Sie den code, um es nur als plugin zu tun war (direkt unter der Schaltfläche in den Warenkorb).

    Hier in diesem Beispiel/Antwort, die ich in meine variable Produkt 2 Attribute für die Produkt-Varianten: Color und Size.

    Dies sind meine Einstellungen Contact form 7 für die form, die ich verwende in meinem code:

    <label> Your Name (required)
        [text* your-name] </label>
    
    <label> Your Email (required)
        [email* your-email] </label>
    
    <label> Subject (required)
        [text* your-subject class:product_name] </label>
    
    <label> Your Message
        [textarea your-message] </label>
    
    [submit "Send"]
    
    [text your-product class:product_details]

    Hier habe ich diesen text hinzufügen Feld [text your-product class:product_details]. so müssen Sie auch in Ihre „E-mail“ Registerkarte „Einstellungen“ [your-product] tag in der „message body“, zu bekommen, dass in Ihrem E-Mail:

    From: [your-name] <[your-email]>
    Subject: [your-subject]
    
    Product: [your-product]
    
    Message Body:
    [your-message]
    
    --------------
    This e-mail was sent from a contact form 7

    Den PHP code der benutzerdefinierten funtion hakte woocommerce_after_add_to_cart_form action hook:

    add_action( 'woocommerce_after_add_to_cart_form', 'product_enquiry_custom_form' );
    function product_enquiry_custom_form() {
    
        global $product, $post;
    
        //Set HERE your Contact Form 7 shortcode:
        $contact_form_shortcode = '[contact-form-7 id="382" title="form"]';
    
        //compatibility with WC +3
        $product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id;
        $product_title = $post->post_title;
    
        //The email subject for the "Subject Field"
        $email_subject = __( 'Enquire about', 'woocommerce' ) . ' ' . $product_title;
    
        foreach($product->get_available_variations() as $variation){
            $variation_id = $variation['variation_id'];
            foreach($variation['attributes'] as $key => $value){
                $key = ucfirst( str_replace( 'attribute_pa_', '', $key ) );
                $variations_attributes[$variation_id][$key] = $value;
            }
        }
        //Just for testing the output of $variations_attributes
        //echo '<pre>'; print_r( $variations_attributes ); echo '</pre>';
    
    
        ## CSS INJECTED RULES ## (You can also remve this and add the CSS to the style.css file of your theme
        ?>
        <style>
            .wpcf7-form-control-wrap.your-product{ opacity:0;width:0px;height:0px;overflow: hidden;display:block;margin:0;padding:0;}
        </style>
    
        <?php
    
    
        //Displaying the title for the form (optional)
        echo '<h3>'.$email_subject.'</h3><br>
            <div class="enquiry-form">' . do_shortcode( $contact_form_shortcode ) . '</div>';
    
    
        ## THE JQUERY SCRIPT ##
        ?>
        <script>
            (function($){
    
                <?php
                    //Passing the product variations attributes array to javascript
                    $js_array = json_encode($variations_attributes);
                    echo 'var $variationsAttributes = '. $js_array ;
                ?>
    
                //Displaying the subject in the subject field
                $('.product_name').val('<?php echo $email_subject; ?>');
    
                //////////ATTRIBUTES VARIATIONS SECTION ///////////
    
                var $attributes;
    
                $('td.value select').blur(function() {
                    var $variationId = $('input[name="variation_id"]').val();
                    //console.log('variationId: '+$variationId);
                    if (typeof $variationId !== 'undefined' ){
                        for(key in $variationsAttributes){
                            if( key == $variationId ){
                                $attributes = $variationsAttributes[key];
                                break;
                            }
                        }
    
                    }
                    if ( typeof $attributes !== 'undefined' ){
                        //console.log('Attributes: '+JSON.stringify($attributes));
                        var $attributesString = '';
                        for(var attrKey in $attributes){
                            $attributesString += ' ' + attrKey + ': ' + $attributes[attrKey] + ' — ';
                        }
                       $('.product_details').val( 'Product <?php echo $product_title; ?> (ID <?php echo $product_id; ?>): ' + $attributesString );
                    }
                });
    
            })(jQuery);
        </script>
    
        <?php
    }

    Code geht in function.php Datei der aktiven child-theme (oder ein Thema) oder auch in jedem plugin-Datei.

    Erhalten Sie genau das, was das plugin wurde dabei mit, dass additionals Merkmale:

    • Eine benutzerdefinierte Produkt-Titel, als Betreff der E-mail.
    • Die gewählte Variante Attribute Name label + Werte in die zusätzliche fiels (wird ausgeblendet).

    Hier sind die screen-shoots von meinem test-server:

    Das Produkt mit den ausgewählten Parametern:
    Übergeben Sie die gewählten Produkt-Varianten, Daten in Kontakt-Formular 7-Anfrage-Formular

    Was ich auf dem Formular (ich nicht ausblenden das text-Feld, um zu zeigen Sie die Daten gezogen von jQuery):
    Übergeben Sie die gewählten Produkt-Varianten, Daten in Kontakt-Formular 7-Anfrage-Formular

    Wie Sie sehen, erhalten Sie die Daten, die Sie benötigen, um senden Sie Ihre E-Mail -…

    Sobald ich ausgewählt habe, die Attribute des Produkts und füllte die anderen Felder des Formulars aus, wenn ich Absenden dieses Formulars erhalte ich diese E-Mail-Nachricht:

    From: John Smith <j.[email protected].com>
    Subject: Enquire about Ship Your Idea
    
    Product: Product Ship Your Idea (ID 40):  Color: black   Size: 12 
    
    Message Body:
    I send this request about this very nice product  I send this request about this very nice product 
    
    --
    This e-mail was sent from a contact form 7

    So alles funktioniert so wie man erwartet, und das ist eine Arbeit getestet, Beispiel Antwort.

Schreibe einen Kommentar

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