Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Title: Prevent Duplicate Orders in WooCommerce within One Hour
- * Description: This code snippet prevents duplicate orders from being placed by the same user within an hour.
- * It checks the orders made by the current user in the last hour before a new order is processed.
- */
- add_action( 'woocommerce_checkout_process', 'wbcom_prevent_duplicate_order_within_one_hour' );
- /**
- * Prevents a user from placing a duplicate order within one hour.
- */
- function wbcom_prevent_duplicate_order_within_one_hour() {
- // Get current user information
- $current_user = wp_get_current_user();
- // Define the query parameters for recent orders
- $args = array(
- 'customer_id' => $current_user->ID, // Orders by the current user
- 'date_created' => '>' . ( time() - HOUR_IN_SECONDS ), // Orders within the last hour
- 'status' => array( 'on-hold', 'processing', 'completed' ) // Only include these statuses
- );
- // Retrieve the orders based on the specified criteria
- $orders = wc_get_orders( $args );
- // Loop through each order and check for duplicates
- foreach( $orders as $order ) {
- // Additional checks can be added here, e.g., check total amount, items, etc.
- // Add an error notice and stop the checkout process
- wc_add_notice( 'A similar order has been placed in the last hour. Please wait before placing a new order.', 'error' );
- return;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement