cancel order in woocommerce code example
Example: bulk cancel order woocommerce
add_action( 'admin_action_mark_change_status_to_cancelled', 'my_bulk_process_custom_status' );
function my_bulk_process_custom_status() {
if( !isset( $_REQUEST['post'] ) && !is_array( $_REQUEST['post'] ) )
return;
foreach( $_REQUEST['post'] as $order_id ) {
$order = new WC_Order( $order_id );
$order_note = 'That\'s what happened by bulk edit:';
$order->update_status( 'cancelled', $order_note, true );
}
$location = add_query_arg( array(
'post_type' => 'shop_order',
'mark_change_status_to_cancelled' => 1,
'changed' => count( $_REQUEST['post'] ),
'ids' => join( $_REQUEST['post'], ',' ),
'post_status' => 'all'
), 'edit.php' );
wp_redirect( admin_url( $location ) );
exit;
}
add_action('admin_notices', 'my_custom_order_status_notices');
function my_custom_order_status_notices() {
global $pagenow, $typenow;
if( $typenow == 'shop_order'
&& $pagenow == 'edit.php'
&& isset( $_REQUEST['mark_change_status_to_cancelled'] )
&& $_REQUEST['mark_change_status_to_cancelled'] == 1
&& isset( $_REQUEST['changed'] ) ) {
$message = sprintf( _n( 'Order status changed.', '%s order statuses changed.', $_REQUEST['changed'] ), number_format_i18n( $_REQUEST['changed'] ) );
echo "<div class=\"updated\"><p>{$message}</p></div>";
}
}