本教程旨在指导您如何在 WooCommerce 单品页动态显示预计配送时间。通过集成自定义产品分类(如“立即有货”)和库存状态,我们将详细讲解如何编写代码,确保仅对符合特定条件的产品显示配送通知,并根据下单时间智能调整预计送达日期,从而显著提升用户体验和信息透明度。
引言:动态配送预估的重要性
在电子商务中,清晰、准确的配送信息对于顾客购买决策至关重要。传统的静态配送信息往往无法满足所有产品的多样化需求,例如某些产品可能“立即有货”并享受快速配送,而另一些则可能需要更长的备货时间。此外,根据库存状态动态显示或隐藏配送信息,也能避免给顾客带来不必要的困惑。本教程将介绍一种灵活的解决方案,允许您根据产品的自定义分类和库存状态,在 WooCommerce 单品页显示定制化的配送预估。
核心实现:集成产品数据与自定义逻辑
要实现动态配送预估,我们需要在 WooCommerce 的产品页面加载时,获取当前产品的信息,包括其自定义分类和库存状态,然后根据预设的业务逻辑计算并显示配送日期。
1. 获取产品信息与分类
WooCommerce 提供了全局的 $product 对象,通过它可以访问当前产品的各种属性,例如 ID、库存状态和所属分类。我们可以使用 wp_get_post_terms() 函数来获取产品所属的自定义分类术语。
2. 库存状态判断
在显示配送预估之前,必须检查产品的库存状态。如果产品缺货,显示配送信息可能会误导顾客。$product-youjiankuohaophpcnis_in_stock() 方法可以帮助我们轻松判断产品是否有库存。
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 js ai php 对象
评论(已关闭)
评论已关闭