vapvarun icon

Prevent Duplicate Orders in WooCommerce within One Hour

vapvarun | PRO | 01/10/24 09:32:48 AM UTC | 0 ⭐ | 1345 👁️ | Never ⏰ | []
PHP |

1.43 KB

|

Software

|

0 👍

/

0 👎

/**
 * 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;
    }
}

Comments