大家是否曾希望你的 WooCommerce 商店可以让客户选择他们偏好的配送日期和时间?好消息是——完全可以做到!只需一段简单的代码,我们就能在结账页面添加这个功能,让客户拥有更多控制权,同时提升他们的购物体验。
在这篇文章中,大胡将带你了解这段代码的作用、如何使用代码来实现这个功能。
一、这段代码能做什么?
这段代码会在我们的 WooCommerce 结账页面添加两个新字段:
首选配送日期:一个日历日期选择器,客户可以在指定范围内选择配送日期。
首选配送时间:一个下拉菜单,根据你设定的时间段提供可选的配送时间。

这段代码可以实现以下功能:
可配置的配送时间安排:你可以设置每天的开始和结束时间、时间段间隔(例如每15分钟一个时间段),以及客户最多可以提前多少天预约配送。
- 禁用周末配送:可以选择关闭周末的配送服务。
- 数据验证:在客户下单前,确保他们已选择符合范围的配送日期和时间。
- 订单集成:将客户选择的配送日期和时间保存到订单详情中,你可以在后台查看,并可将其包含在发送给客户的邮件中。
- 如何将代码加入wordpress独立站中?
1.访问主题文件:进入你的 WordPress 后台,导航到「外观 > 主题编辑器」,然后打开 functions.php 文件。
2.先备份:在进行任何修改之前,一定要先备份你的 functions.php 文件。
3.添加代码:将完整的代码片段粘贴到 functions.php 文件的末尾。
4.保存更改:点击“更新文件”进行保存。
重要提示: 直接编辑 functions.php 文件存在一定风险。一个小错误就可能导致网站崩溃,而且主题更新时也可能覆盖你的修改。
代码如下:代码太长就不贴出来了,有需要的找我领取就行了。
if (!defined('ABSPATH')) {
exit; // Exit if accessed directly
}
// Delivery Time Configuration
define('DELIVERY_START_TIME', '10:00'); // Format: 'HH:mm' (24-hour format)
define('DELIVERY_END_TIME', '18:00'); // Format: 'HH:mm' (24-hour format)
define('DELIVERY_INTERVAL', 15); // in minutes (30 = half hour slots, 60 = hour slots)
// Delivery Date Configuration
define('DELIVERY_DAYS_AHEAD', 90); // number of days ahead to allow booking
define('DELIVERY_MIN_DAYS_AHEAD', 1); // minimum days ahead for delivery (1 = next day, 0 = today)
define('DELIVERY_DISABLE_WEEKENDS', true); // set to false to allow weekend deliveries
// Disabled Days Configuration (0 = Sunday, 6 = Saturday)
global $DELIVERY_DISABLED_DAYS;
$DELIVERY_DISABLED_DAYS = array(); // Initialize empty array
if (DELIVERY_DISABLE_WEEKENDS) {
$DELIVERY_DISABLED_DAYS = array(0, 6); // 0 = Sunday, 6 = Saturday
}
// Calculate date range
function wpsh_get_delivery_date_range() {
static $dates = null;
if ($dates === null) {
$dates = array(
'start' => date('Y-m-d', strtotime('+' . DELIVERY_MIN_DAYS_AHEAD . ' day')),
'end' => date('Y-m-d', strtotime('+' . DELIVERY_DAYS_AHEAD . ' days'))
);
}
return $dates;
}
代码使用说明:
1.时间日期设置
define('DELIVERY_START_TIME', '10:00'); // Delivery start time
define('DELIVERY_END_TIME', '18:00'); // Delivery end time
define('DELIVERY_INTERVAL', 15); // Time slots in minutes
define('DELIVERY_DAYS_AHEAD', 90); // How many days ahead customers can book
define('DELIVERY_MIN_DAYS_AHEAD', 1); // Minimum days ahead for delivery
define('DELIVERY_DISABLE_WEEKENDS', true); // Disable weekend deliveries
DELIVERY_START_TIME 和 DELIVERY_END_TIME:设置每日的配送时间范围(开始与结束时间)。
- DELIVERY_INTERVAL:设置每个时间段的间隔(例如 15 分钟)。
- DELIVERY_DAYS_AHEAD:设置客户最多可以提前多少天预约配送。
- DELIVERY_MIN_DAYS_AHEAD:设置最早可配送日期需提前的最少天数。
- DELIVERY_DISABLE_WEEKENDS:设置为 `true` 时,将禁用周末配送。
2.禁止在某个日期配送
代码中有一个非常实用的部分,可以让你禁用一周中的特定日期进行配送。如果你不在周末提供配送服务,这个功能就非常适合你。
$DELIVERY_DISABLED_DAYS = array(0, 6); // 0 = Sunday, 6 = Saturday
通过自定义 `$DELIVERY_DISABLED_DAYS` 数组,你可以根据业务安排灵活设置可配送日期,使其完全符合你的运营时间。
1.$DELIVERY_DISABLED_DAYS:这是一个数组(列表),用于存放你想要禁用的星期对应的数字。
2.日期编号说明:在编程中,一周的日期通常用 0 到 6 表示,其中:
* 0 = 星期日
* 1 = 星期一
* 2 = 星期二
* 3 = 星期三
* 4 = 星期四
* 5 = 星期五
* 6 = 星期六
在上述代码中,我们禁用了星期日(0)和星期六(6),从而阻止客户选择周末作为配送日期。
总结:
添加配送日期和时间选择器可以提升客户体验,让他们能够自行选择收货时间。这对于提供本地配送或需要预约安排的业务来说尤其实用。




