boxmoe_header_banner_img

Hello! 欢迎来到悠悠畅享网!

文章导读

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


avatar
作者 2025年9月7日 10

在 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  }

代码解释:

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

AiMusic.so

Aimusic.so是一款全新的在线免费AI音乐生成器

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

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

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

相关标签:



评论(已关闭)

评论已关闭