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

DDD
发布: 2025-09-07 23:02:01
原创
654人浏览过

在 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 = "<br><div class='woocommerce-message' style='clear:both'>Ready for delivery between {$start_del_day} & {$end_del_day} when you order within {$hours_left} hours.</div>";

               echo $html;

            } // endif

        } // endif

    } // endif

}
登录后复制

代码解释:

芦笋演示
芦笋演示

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

芦笋演示 34
查看详情 芦笋演示
  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 商店中,仅针对特定分类下的产品,显示精确的预计交货时间信息。 这将极大地提升用户体验,并帮助用户更好地了解产品的交货时间。

以上就是在 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号