0

0

在 WooCommerce 特定分类的产品中显示预计交货时间

DDD

DDD

发布时间:2025-09-07 23:02:01

|

667人浏览过

|

来源于php中文网

原创

在 woocommerce 特定分类的产品中显示预计交货时间

“本文档旨在指导开发者如何在 WooCommerce 商店中,针对特定分类(taxonomy)下的产品,显示预计交货时间。我们将修改现有的代码,使其仅在指定分类的产品页面上显示交货信息,并根据订单时间动态调整交货日期,同时处理缺货情况,提供更精确的预计交货时间提示。”

针对特定分类显示预计交货时间

为了仅在特定分类的产品页面上显示预计交货时间,我们需要利用 WooCommerce 的全局 $product 对象来获取当前产品的分类信息。以下是如何修改代码以实现此目的:

add_action( 'woocommerce_before_add_to_cart_form', 'delivery_estimate' );

function delivery_estimate() {

   global $product;

   // 检查产品是否有库存
   if ( !$product->is_in_stock() ) {
        return; // 如果缺货,则不显示交货信息
   }

   if ( 'product' == $product->post_type ) { // 确保是产品页面

       $terms = wp_get_post_terms( $product->id, 'available_now' ); // 将 'available_now' 替换为你实际的分类名称

       if ( $terms instanceof WP_Error ) {
           // 处理错误,例如记录日志
           error_log( '获取分类信息时出错: ' . $terms->get_error_message() );

       } elseif ( ! empty( $terms ) ) {

           $term = $terms[ 0 ]; // 假设产品只属于一个分类

           if ( 'available-now' == $term->slug ) { // 将 'available-now' 替换为你实际的分类别名

               date_default_timezone_set( 'Europe/Tallinn' );  

               // 获取当前时间
               $current_hour = date('H');
               $end_of_day_hour = 16; // 4PM

               // 计算剩余时间 (小时)
               $hours_left = $end_of_day_hour - $current_hour;
               if ($hours_left < 0) {
                   $hours_left = 0;
               }

               // if FRI/SAT/SUN delivery will be MON
               if ( date( 'N' ) >= 5 ) {
                  $start_del_day = date( "jS F", strtotime( "next tuesday" ) );
                  $end_del_day = date( "jS F", strtotime( "next tuesday" ) );
                  $order_by = "Monday";
               }

               // if MON/THU after 4PM delivery will be day after tomorrow
               elseif ( date( 'H' ) >= 16 ) {
                  $start_del_day = date( "jS F", strtotime( "tomorrow + 2 day" ) );
                  $end_del_day = date( "jS F", strtotime( "tomorrow + 2 day" ) );
                  $order_by = "tomorrow";
               }

               // if MON/THU before 4PM delivery will be TOMORROW
               else {
                  $start_del_day = date( "jS F", strtotime( "tomorrow + 1 day" ) );
                  $end_del_day = date( "jS F", strtotime( "tomorrow + 1 day" ) );
                  $order_by = "today";
               }

               // 构建输出信息
               $html = "
Ready for delivery between {$start_del_day} & {$end_del_day} when you order within {$hours_left} hours.
"; echo $html; } // endif } // endif } // endif }

代码解释:

ASP.NET 4.0电子商城
ASP.NET 4.0电子商城

在现实生活中的购物过程,购物者需要先到商场,找到指定的产品柜台下,查看产品实体以及标价信息,如果产品合适,就将该产品放到购物车中,到收款处付款结算。电子商务网站通过虚拟网页的形式在计算机上摸拟了整个过程,首先电子商务设计人员将产品信息分类显示在网页上,用户查看网页上的产品信息,当用户看到了中意的产品后,可以将该产品添加到购物车,最后使用网上支付工具进行结算,而货物将由公司通过快递等方式发送给购物者

下载
  1. global $product;: 访问 WooCommerce 的全局产品对象,允许我们获取当前产品的信息。
  2. if ( !$product->is_in_stock() ) { return; }: 首先检查产品是否有库存。如果缺货,函数直接返回,不显示任何交货信息。
  3. if ( 'product' == $product->post_type ): 确保当前页面是产品页面。
  4. wp_get_post_terms( $product->id, 'available_now' ): 获取当前产品 available_now 分类的所有条目。 将 'available_now' 替换为你实际使用的分类名称。
  5. 错误处理: 检查 $terms 是否为 WP_Error 实例。 如果是,则记录错误。
  6. 分类判断: 检查 $terms 是否为空,以及第一个条目的别名是否与 'available-now' 相匹配。 将 'available-now' 替换为你实际使用的分类别名。
  7. 时间计算: 获取当前时间,并计算距离截止时间(4PM)还剩多少小时。
  8. 交货日期计算: 根据当前日期和时间计算预计交货日期。
  9. 输出信息: 构建包含预计交货日期和剩余时间的 HTML 信息。

注意事项

  • 替换分类名称和别名: 务必将代码中的 'available_now' 和 'available-now' 替换为你实际使用的分类名称和别名。
  • 时区设置: 确保 date_default_timezone_set() 设置为正确的时区。
  • 错误处理: 建议添加更完善的错误处理机制,例如将错误信息记录到日志文件中。
  • 测试: 在生产环境中使用之前,请务必在测试环境中进行充分测试。
  • 多分类支持: 如果一个产品可能属于多个分类,你需要修改代码来处理这种情况。 可以使用循环遍历 $terms 数组。
  • 自定义格式: 根据你的需求,可以自定义输出信息的格式。

通过以上步骤,你就可以实现在 WooCommerce 商店中,仅针对特定分类下的产品,显示精确的预计交货时间信息。 这将极大地提升用户体验,并帮助用户更好地了解产品的交货时间。

相关专题

更多
html版权符号
html版权符号

html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

616

2023.06.14

html在线编辑器
html在线编辑器

html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

658

2023.06.21

html网页制作
html网页制作

html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

471

2023.07.31

html空格
html空格

html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

245

2023.08.01

html是什么
html是什么

HTML是一种标准标记语言,用于创建和呈现网页的结构和内容,是互联网发展的基石,为网页开发提供了丰富的功能和灵活性。本专题为大家提供html相关的各种文章、以及下载和课程。

2898

2023.08.11

html字体大小怎么设置
html字体大小怎么设置

在网页设计中,字体大小的选择是至关重要的。合理的字体大小不仅可以提升网页的可读性,还能够影响用户对网页整体布局的感知。php中文网将介绍一些常用的方法和技巧,帮助您在HTML中设置合适的字体大小。

507

2023.08.11

html转txt
html转txt

html转txt的方法有使用文本编辑器、使用在线转换工具和使用Python编程。本专题为大家提供html转txt相关的文章、下载、课程内容,供大家免费下载体验。

312

2023.08.31

html文本框代码怎么写
html文本框代码怎么写

html文本框代码:1、单行文本框【<input type="text" style="height:..;width:..;" />】;2、多行文本框【textarea style=";height:;"></textare】。

426

2023.09.01

C++ 高级模板编程与元编程
C++ 高级模板编程与元编程

本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

4

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3万人学习

AngularJS教程
AngularJS教程

共24课时 | 2.9万人学习

CSS教程
CSS教程

共754课时 | 22.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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