2017-11-14 5 views
0

Ich habe eine interessante und etwas komplizierte Aufgabe mit Schwerkraftformen und Woocommerce zu tun.Create Woocommerce Bestellung mit Gravitationsformen Metadaten

Auf unserer Website bieten wir jedem neu registrierten Kunden ein kostenloses Muster an. Wir haben versucht, etwas aufzubauen, sobald neue Benutzer ihre Daten wie E-Mail, Name und Adresse sowie das kostenlose Beispiel, das sie erhalten und senden möchten, ausfüllen, sie sollten eine Bestellung in Woocommerce erstellen. Ist es möglich mit Schwerkraftformen oder ist es überhaupt nicht möglich?

Ich versuchte es selbst, es funktionierte nicht für mich.

Antwort

2

Es ist möglich, aber es gibt eine Menge von Variablen, die in Betracht gezogen werden müssen, so dass es sehr schwierig ist, ohne einen Versuch zuerst zu helfen.

Dies wird Ihnen nur dann, wenn zeigen zu beginnen, müssen Sie den Rest, um herauszufinden:

add_action('gform_after_submission', 'post_to_third_party', 10, 2); 
function post_to_third_party($entry, $form) { 
    global $woocommerce; 
    // use this to find out $entry output 
    var_dump($entry); 

    // Make sure to add hidden field somewhere in the form with product id and define it here, If you have some other way of defining products in the form you need to make sure product id is returned in the variable below somehow 
    $product_id = rgar($entry, '12'); 



    $address = array(
     'first_name' => rgar($entry, '5'), 
     'last_name' => rgar($entry, '2'), 
     'company' => rgar($entry, '3'), 
     'email'  => rgar($entry, '4'), 
     'phone'  => rgar($entry, '5'), 
     'address_1' => rgar($entry, '6'), 
     'address_2' => rgar($entry, '7'), 
     'city'  => rgar($entry, '8'), 
     'state'  => rgar($entry, '9'), 
     'postcode' => rgar($entry, '10'), 
     'country' => rgar($entry, '11'), 
    ); 

    $prices = array('totals' => array( 
      'subtotal' => 0, 
      'total' => 0, 
     )); 

    $order = wc_create_order(); 

    $order->add_product(wc_get_product($product_id), 1, $prices); 
    $order->set_address($address, 'billing'); 
    $order->calculate_totals(); 
    $order->update_status("processing", 'Sample Order', TRUE); 


} 
+0

Hallo Ali, Vielen Dank für Ihre schnelle Antwort. Ich habe Ihren Code in die Funktionsdatei aufgenommen und getestet. Ich habe unter Fehler Parse-Fehler: Syntaxfehler, unerwartete '' last_name '' (T_CONSTANT_ENCAPSED_STRING), erwartet ')'. Versucht, es herauszufinden, aber nicht in der Lage, es zum Laufen zu bringen, und wie mache ich den Preis null zu diesen Beispielaufträgen. Entschuldigung für die dummen Fragen. Wie ich ein unreifer Entwickler bin und meinen Kopf herumrenne. – Sunny

+0

Ich habe den Code geändert, er ist getestet und funktioniert, aber erwarte nicht, Paste und done zu kopieren. Sie müssen die Produkt-ID-Variable ändern und die ausgewählte Produkt-ID und die Adressvariable die Adresse aus der Einreichung zurückgeben lassen. Das ist alles. –

Verwandte Themen