0

I am working on a code to create a woocommerce order manually from a gravity form submission.

I have 'custom notes' that I have managed to add to order notes BUT ideally it would be in a meta box below the product/item line.

Any suggestions would be appreciated (I am self taught and not expert).

Here is my code:

add_action( 'gform_after_submission_56', '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
    $user_id =rgar( $entry, '97' );
    $note = rgar( $entry, '53' );

    $product_id = rgar( $entry, '71' );
    $quantity = rgar( $entry, '73' );


    $address = array(

         'first_name' => rgar( $entry, '98' ),
         'last_name'  => rgar( $entry, '99' ),
         'company'    => rgar( $entry, '' ),
         'email'      => rgar( $entry, '83' ),
         'phone'      => rgar( $entry, '84' ),
         'address_1'  => rgar( $entry, '88.1' ),
         'address_2'  => rgar( $entry, '88.2' ),
         'city'       => rgar( $entry, '88.3' ),
         'state'      => rgar( $entry, '88.4' ),
         'postcode'   => rgar( $entry, '88.5' ),
         'country'    => rgar( $entry, '88.6' ),

    );



    $order = wc_create_order();
    $order->set_customer_id( $user_id );

    $order->add_product( wc_get_product($product_id), $quantity, $prices); 
    $order->set_address( $address, 'billing' );
    $order->calculate_totals();
    $order->update_status("on hold", 'pending', TRUE); 

    $order->add_order_note( $note );
}
2
  • What are you having trouble with? It's not clear from your question. Commented Feb 22, 2020 at 8:46
  • Is it a part of WordPress?
    – Max Yudin
    Commented Feb 22, 2020 at 15:12

1 Answer 1

0

I think you can use the following:

$order->update_meta_data( 'YOUR_META_KEY_HERE', $note );

Remember to replace YOUR_META_KEY_HERE with your preferred key, Complete code:

add_action( 'gform_after_submission_56', '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
    $user_id =rgar( $entry, '97' );
    $note = rgar( $entry, '53' );

    $product_id = rgar( $entry, '71' );
    $quantity = rgar( $entry, '73' );


    $address = array(

         'first_name' => rgar( $entry, '98' ),
         'last_name'  => rgar( $entry, '99' ),
         'company'    => rgar( $entry, '' ),
         'email'      => rgar( $entry, '83' ),
         'phone'      => rgar( $entry, '84' ),
         'address_1'  => rgar( $entry, '88.1' ),
         'address_2'  => rgar( $entry, '88.2' ),
         'city'       => rgar( $entry, '88.3' ),
         'state'      => rgar( $entry, '88.4' ),
         'postcode'   => rgar( $entry, '88.5' ),
         'country'    => rgar( $entry, '88.6' ),

    );



    $order = wc_create_order();
    $order->set_customer_id( $user_id );

    $order->add_product( wc_get_product($product_id), $quantity, $prices); 
    $order->set_address( $address, 'billing' );
    $order->calculate_totals();
    $order->update_status("on hold", 'pending', TRUE);

    $order->update_meta_data( 'YOUR_META_KEY_HERE', $note );

}

Thank You

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.