By default, WooCommerce assigns numerical order numbers to transactions, starting from 1 and incrementing with each new order. But if you run a big store, you might want complex order numbers that are harder to guess for security reasons. This post will show you how to create a unique alphanumeric string for each order, combining letters and numbers in a random sequence.
Solution: Add Alphanumeric Format of Custom Order Numbers
The code snippet modifies the default WooCommerce order IDs with unique custom order numbers generated in alphanumeric formats.
add_filter( 'woocommerce_checkout_create_order', 'ts_save_order_number_metadata' ); function ts_save_order_number_metadata( $order ) { // Define the number of desired digits for the numeric part $digits = 4; // Define the letters for the alphabetic part $letters = range('A', 'Z'); // Get the current sequential counter for the numeric part $data = get_option( 'wc_sequential_order_number' ); $number = isset( $data['sequential'] ) ? intval( $data['sequential'] ) + 1 : 1; $data['sequential'] = $number; // Update the sequential counter update_option( 'wc_sequential_order_number', $data ); // Calculate the alphabetic part of the order number $alphabetic_index = ($number - 1) % count($letters); // Subtract 1 to start from 'A' $alphabetic_part = $letters[$alphabetic_index]; // Combine the alphabetic and numeric parts $order_number = $alphabetic_part . str_pad( $number, $digits, '0', STR_PAD_LEFT ); // Add the order number as custom metadata $order->add_meta_data( '_order_number', $order_number, true ); } // Add filter to read the order number from metadata add_filter( 'woocommerce_order_number', 'ts_define_order_number', 10, 2 ); function ts_define_order_number( $order_id, $order ) { // Read the order number from metadata if ( $order_number = $order->get_meta( '_order_number' ) ) { $order_id = $order_number; } return $order_id; }
Output
When a new order is created in WooCommerce, instead of the default numerical order numbers, this code will generate custom alphanumeric order numbers.
There’s so much you can do to add additional features and functionalities tailored to the WooCommerce order numbering system. For instance, you can combine multiple elements such as product categories and timestamps, and append them to custom order numbers, making the order IDs informative and unique.