I am trying to create a form that automatically updates order status once form has been submitted. The form is located at the order details page, so I would assume that current page ID is equal to orderID. When I try to do a form submission it's simply just stuck and nothing happens. I am asumming it's a problem with getting the orderID and therefore which order to update status on.
I've found the gform_after_submission hook and linked it to the form that is placed on the order details page (form ID 7). I've been trying to use global $wpdb; but not quite sure if thats the right thing to do.
add_action( 'gform_after_submission', 'set_post_content', 10, 2 );
function update_order_submission( $order_id ) {
global $wpdb;
//getting orderID
$order = wc_get_order( $order_id );
//changing order status
$order = array();
$order['ID'] = $order->ID;
$order['post_status'] = 'wc-completed';
//updating order
wp_update_post( $order );
}
I am expecting that once a form has been submitted then the order status of the current order ID (the page the form was submitted from) is going to be updated as orderstatus completed.
Replace your code with follows -
add_action( 'gform_after_submission', 'set_post_content', 10, 2 );
function update_order_submission( $entry, $form ) {
global $post;
$order_id = get_the_ID(); // getting orderID
$order = wc_get_order( $order_id );
if( $order ) {
//changing order status
$order->update_status( 'completed' );
}
}