Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save nicrame/0f53950da65373b1bb13eeadaa158b03 to your computer and use it in GitHub Desktop.
Save nicrame/0f53950da65373b1bb13eeadaa158b03 to your computer and use it in GitHub Desktop.
Auto Complete all WooCommerce virtual orders
<?php // only copy this line if needed
/**
* Auto Complete all WooCommerce virtual orders.
*
* @param int $order_id The order ID to check
* @return void
*/
function custom_woocommerce_auto_complete_virtual_orders( $order_id ) {
// if there is no order id, exit
if ( ! $order_id ) {
return;
}
// get the order and its exit
$order = wc_get_order( $order_id );
$items = $order->get_items();
// if there are no items, exit
if ( 0 >= count( $items ) ) {
return;
}
// go through each item
foreach ( $items as $item ) {
// if it is a variation
if ( isset($item['variation_id'] )) {
// make a product based upon variation - variation products cannot be virtual so return instead
//$product = new WC_Product( $item['variation_id'] );
return;
} else {
// else make a product off of the product id
$product = new WC_Product( $item['product_id'] );
}
// if the product isn't virtual, exit
if ( ! $product->is_virtual() ) {
return;
}
}
/*
* If we made it this far, then all of our items are virual
* We set the order to completed.
*/
$order->update_status( 'completed' );
}
add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_virtual_orders' );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment