Celebrate CodingBunny’s founder turning 45 - 45% OFF
The offer will end in
DAYS
HOURS
MINUTES
Displays an estimated delivery date range on the WooCommerce product page based on the day of order.

/**
* Snippet Name: Display Estimated Delivery Date Range
* Snippet Author: coding-bunny.com
* Description: Displays an estimated delivery date range on the WooCommerce product page based on the day of order.
* Version: 1.1.0
*/
if ( ! defined( 'ABSPATH' ) ) {
return;
}
function cbedd_display_estimated_delivery() {
$old_tz = date_default_timezone_get();
date_default_timezone_set( 'Europe/Rome' );
$current_date = strtotime( 'today' );
$day_of_week = date( 'N', $current_date );
switch ( $day_of_week ) {
case 1: // Monday
$delivery_min = strtotime( '+2 days', $current_date );
$delivery_max = strtotime( '+3 days', $current_date );
break;
case 2: // Tuesday
$delivery_min = strtotime( '+2 days', $current_date );
$delivery_max = strtotime( '+3 days', $current_date );
break;
case 3: // Wednesday
$delivery_min = strtotime( '+2 days', $current_date );
$delivery_max = strtotime( '+5 days', $current_date );
break;
case 4: // Thursday
$delivery_min = strtotime( '+4 days', $current_date );
$delivery_max = strtotime( '+5 days', $current_date );
break;
case 5: // Friday
$delivery_min = strtotime( '+4 days', $current_date );
$delivery_max = strtotime( '+5 days', $current_date );
break;
case 6: // Saturday
$delivery_min = strtotime( '+3 days', $current_date );
$delivery_max = strtotime( '+4 days', $current_date );
break;
case 7: // Sunday
default:
$delivery_min = strtotime( '+2 days', $current_date );
$delivery_max = strtotime( '+3 days', $current_date );
break;
}
date_default_timezone_set( $old_tz );
$delivery_min_formatted = strtolower( esc_html( date_i18n( 'l j F', $delivery_min ) ) );
$delivery_max_formatted = strtolower( esc_html( date_i18n( 'l j F', $delivery_max ) ) );
$dashicon = '<span class="cbedd-icon dashicons dashicons-calendar-alt" style="font-size:22px;"></span>';
$output = sprintf(
'<div class="cbedd-estimate-delivery" style="padding:16px; border:1px solid #e0e0e0; border-radius:6px; background:#f9f9f9; display:flex; align-items:center; flex-wrap:wrap; gap:12px;">
%1$s
<span>Receive it between</span>
<span style="font-weight:700;">%2$s</span>
<span>and</span>
<span style="font-weight:700;">%3$s</span>
</div>',
$dashicon,
$delivery_min_formatted,
$delivery_max_formatted
);
echo wp_kses(
$output,
array(
'div' => array( 'class' => true, 'style' => true ),
'span' => array( 'class' => true, 'style' => true, 'aria-hidden' => true ),
)
);
}
add_action( 'woocommerce_after_add_to_cart_button', 'cbedd_display_estimated_delivery' );
add_action( 'wp_enqueue_scripts', function () {
wp_enqueue_style( 'dashicons' );
});