WooCommerce 产品配送预估:基于自定义分类和库存状态的动态显示教程

心靈之曲
发布: 2025-09-07 22:07:01
原创
206人浏览过

woocommerce 产品配送预估:基于自定义分类和库存状态的动态显示教程

本教程旨在指导您如何在 WooCommerce 单品页动态显示预计配送时间。通过集成自定义产品分类(如“立即有货”)和库存状态,我们将详细讲解如何编写代码,确保仅对符合特定条件的产品显示配送通知,并根据下单时间智能调整预计送达日期,从而显著提升用户体验和信息透明度。

引言:动态配送预估的重要性

在电子商务中,清晰、准确的配送信息对于顾客购买决策至关重要。传统的静态配送信息往往无法满足所有产品的多样化需求,例如某些产品可能“立即有货”并享受快速配送,而另一些则可能需要更长的备货时间。此外,根据库存状态动态显示或隐藏配送信息,也能避免给顾客带来不必要的困惑。本教程将介绍一种灵活的解决方案,允许您根据产品的自定义分类和库存状态,在 WooCommerce 单品页显示定制化的配送预估。

核心实现:集成产品数据与自定义逻辑

要实现动态配送预估,我们需要在 WooCommerce 的产品页面加载时,获取当前产品的信息,包括其自定义分类和库存状态,然后根据预设的业务逻辑计算并显示配送日期。

1. 获取产品信息与分类

WooCommerce 提供了全局的 $product 对象,通过它可以访问当前产品的各种属性,例如 ID、库存状态和所属分类。我们可以使用 wp_get_post_terms() 函数来获取产品所属的自定义分类术语。

2. 库存状态判断

在显示配送预估之前,必须检查产品的库存状态。如果产品缺货,显示配送信息可能会误导顾客。$product-youjiankuohaophpcnis_in_stock() 方法可以帮助我们轻松判断产品是否有库存。

芦笋演示
芦笋演示

一键出成片的录屏演示软件,专为制作产品演示、教学课程和使用教程而设计。

芦笋演示 34
查看详情 芦笋演示

3. 日期与时间计算逻辑

配送日期的计算需要考虑当前日期、星期几以及一天中的时间(例如,下午4点前或后下单)。这将影响预计送达日期是明天、后天还是下周。同时,我们还可以计算出今天在特定时间点前还有多少小时可以下单,以提供更具体的引导。

完整代码示例

将以下代码添加到您的主题的 functions.php 文件或自定义插件中。请务必根据您的实际情况修改自定义分类法名称、分类 Slug 和时区。

<?php
/**
 * WooCommerce 产品配送预估:基于自定义分类和库存状态的动态显示
 */
add_action( 'woocommerce_before_add_to_cart_form', 'custom_delivery_estimate_notice' );

function custom_delivery_estimate_notice() {
    global $product;

    // 确保在单品页且产品对象有效
    if ( ! $product || ! is_product() ) {
        return;
    }

    // --- 配置参数 ---
    $custom_taxonomy_name = 'product_availability'; // 替换为您的自定义分类法名称,例如 'product_type'
    $available_now_slug   = 'available-now';       // 替换为“立即有货”分类的 slug
    $target_order_hour    = 16;                    // 每日截单时间(例如 16 代表下午4点)
    date_default_timezone_set( 'Europe/Tallinn' ); // 根据您的实际时区设置,例如 'Asia/Shanghai'

    // 1. 检查产品库存状态
    if ( ! $product->is_in_stock() ) {
        return; // 如果缺货,不显示通知
    }

    // 2. 检查产品是否属于指定的自定义分类
    $is_available_now = false;
    $terms = wp_get_post_terms( $product->get_id(), $custom_taxonomy_name );

    if ( ! is_wp_error( $terms ) && ! empty( $terms ) ) {
        foreach ( $terms as $term ) {
            if ( $term->slug === $available_now_slug ) {
                $is_available_now = true;
                break;
            }
        }
    }

    if ( ! $is_available_now ) {
        return; // 如果不属于“立即有货”分类,不显示通知
    }

    // 3. 计算配送日期和时间
    $current_day_of_week = (int) date( 'N' ); // 1 (Mon) through 7 (Sun)
    $current_hour        = (int) date( 'H' ); // 00 through 23

    $delivery_date_string = '';
    $order_by_phrase      = ''; // 用于提示顾客何时下单的短语

    // 周五、周六、周日下单,下周二送达
    if ( $current_day_of_week >= 5 ) { // Friday (5), Saturday (6), Sunday (7)
        $delivery_date_string = date( "jS F", strtotime( "next tuesday" ) );
        $order_by_phrase      = "周一";
    }
    // 周一至周四,下午截单时间后下单,后天送达
    elseif ( $current_hour >= $target_order_hour ) {
        $delivery_date_string = date( "jS F", strtotime( "tomorrow + 1 day" ) );
        $order_by_phrase      = "明天";
    }
    // 周一至周四,下午截单时间前下单,明天送达
    else {
        $delivery_date_string = date( "jS F", strtotime( "tomorrow" ) );
        $order_by_phrase      = "今天";
    }

    // 4. 组装并显示通知消息
    $delivery_message = "预计送达日期:<strong>{$delivery_date_string}</strong>。";

    // 计算今天距离截单时间还有多少小时
    $hours_left_today = 0;
    if ( $current_hour < $target_order_hour ) {
        $hours_left_today = $target_order_hour - $current_hour;
    }

    // 根据条件追加下单提示
    // 如果是工作日且在截单时间前,显示“今天还剩X小时可下单”
    if ( $current_day_of_week < 5 && $current_hour < $target_order_hour ) {
        $delivery_message .= " 如果您在今天接下来的 <strong>{$hours_left_today} 小时内</strong>下单,即可
登录后复制

以上就是WooCommerce 产品配送预估:基于自定义分类和库存状态的动态显示教程的详细内容,更多请关注php中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号