自定义WooCommerce预订显示:将结束日期替换为预订时长


自定义WooCommerce预订显示:将结束日期替换为预订时长

本文详细介绍了如何在woocommerce bookings中,将默认显示的预订结束日期替换为更直观的预订时长。针对在购物车、订单详情、邮件及“我的账户”页面中出现的日期显示问题,教程推荐采用覆盖woocommerce bookings模板文件的方法,并提供了具体操作步骤和代码示例,帮助开发者实现灵活的日期显示定制,提升用户体验和管理效率。

在WooCommerce Bookings插件中,当用户预订以天为单位的产品时,系统默认会在多个关键页面(如电子邮件通知、用户“我的账户”页面以及结账后的感谢页面)显示预订的开始日期和结束日期。然而,对于某些业务场景,尤其是按天计费或按时长租赁的服务,直接显示预订的“时长”而非“结束日期”能提供更清晰、更符合用户预期的信息,从而减少混淆并提升用户体验。

虽然可以通过WooCommerce提供的过滤器(如wc_bookings_summary_list_date)来修改或隐藏特定日期显示,但这些过滤器通常只允许对现有日期进行格式化或隐藏,难以直接引入预订时长这一新信息。要彻底实现将结束日期替换为预订时长,并确保在所有相关输出中保持一致性,最健壮和推荐的方法是覆盖WooCommerce Bookings的模板文件

理解WooCommerce Bookings模板覆盖机制

WooCommerce及其扩展插件(如Bookings)都设计了一套灵活的模板系统,允许开发者在不修改插件核心文件的情况下,自定义其输出。这意味着你可以将插件的特定模板文件复制到你的主题(强烈建议使用子主题)中,然后修改这些复制的文件以实现自定义显示逻辑。

当WooCommerce或Bookings需要渲染某个视图时,它会首先检查你的主题目录中是否存在对应的模板文件。如果存在,则使用主题中的文件;否则,使用插件自带的默认模板。

实施步骤:将结束日期替换为预订时长

以下是实现这一目标的分步指南:

1. 识别并复制相关模板文件

首先,你需要确定哪些模板文件负责显示预订日期。对于电子邮件、我的账户页面和感谢页面,通常涉及以下几个核心模板:

  • 订单详情中的预订信息: woocommerce-bookings/templates/order/booking-details.php
  • 我的账户页面中的预订列表/详情: woocommerce-bookings/templates/my-bookings/booking-details.php
  • 电子邮件通知中的预订信息: woocommerce-bookings/templates/emails/customer-booking-details.php (以及其他特定邮件模板,如管理员新订单通知等)

操作步骤:

  1. 通过FTP客户端或文件管理器访问你的网站服务器。
  2. 导航到 wp-content/plugins/woocommerce-bookings/templates/ 目录。
  3. 找到上述提到的模板文件,并将它们复制。
  4. 在你的子主题(例如 your-child-theme/)根目录下创建一个名为 woocommerce-bookings 的新文件夹。
  5. 将复制的模板文件粘贴到 your-child-theme/woocommerce-bookings/ 目录中,保持原有的文件路径结构。例如,booking-details.php 应该放在 your-child-theme/woocommerce-bookings/order/booking-details.php。

2. 修改模板文件以显示预订时长

打开你复制到子主题中的模板文件,查找显示预订结束日期的代码段。这些模板通常会有一个 $booking 对象可用,其中包含了所有预订相关的数据。

示例代码修改(以 booking-details.php 为例):

文心一言 文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

文心一言 4061 查看详情 文心一言

在模板文件中,你可能会找到类似以下的代码来显示开始日期和结束日期:

<?php echo date_i18n( wc_date_format(), $booking->get_start() ); ?>
<?php echo date_i18n( wc_date_format(), $booking->get_end() ); ?>

要将结束日期替换为预订时长,你需要访问 $booking 对象的持续时间信息。WC_Booking 对象通常提供了 get_duration() 和 get_duration_unit() 方法。

找到显示结束日期的行,并将其替换为显示时长的代码。

// 假设 $booking 对象已经可用
// 原始显示:
// echo '预订开始日期: ' . date_i18n( wc_date_format(), $booking->get_start() );
// echo '预订结束日期: ' . date_i18n( wc_date_format(), $booking->get_end() );

// 修改为显示开始日期和预订时长:
echo '预订开始日期: ' . date_i18n( wc_date_format(), $booking->get_start() );

// 获取预订时长和单位
$duration      = $booking->get_duration();
$duration_unit = $booking->get_duration_unit(); // 例如 'day', 'hour', 'minute'

// 获取本地化的单位标签
$unit_label = wc_get_duration_unit_label( $duration_unit );

if ( $duration && $unit_label ) {
    echo '<br>预订时长: ' . esc_html( $duration ) . ' ' . esc_html( $unit_label );
}

代码解释:

  • $booking->get_start(): 获取预订开始时间戳。
  • $booking->get_duration(): 获取预订的持续时间数值。
  • $booking->get_duration_unit(): 获取预订持续时间的单位(例如 'day'、'hour')。
  • wc_get_duration_unit_label(): 这是一个WooCommerce Bookings的辅助函数,用于获取持续时间单位的本地化文本(例如,将 'day' 转换为 '天')。
  • esc_html(): 用于安全输出HTML内容。

重复此过程,修改所有你希望更改显示方式的模板文件。

3. 清除缓存并测试

完成模板修改后,务必清除所有网站缓存(包括主题缓存、插件缓存、CDN缓存等)。然后,进行全面的测试:

  • 提交一个新的预订订单,检查结账后的感谢页面。
  • 登录用户账户,检查“我的账户”页面中的预订详情。
  • 检查发送给客户和管理员的电子邮件通知。

确保所有修改都已生效,并且预订时长显示正确。

注意事项与最佳实践

  • 始终使用子主题: 直接修改父主题或插件文件会在更新时被覆盖。子主题是进行任何自定义的最佳实践。
  • 备份: 在进行任何文件修改之前,务必备份你的网站文件和数据库。
  • 了解模板结构: 在修改模板之前,花时间理解其HTML结构和PHP逻辑,避免引入错误。
  • 兼容性: 插件更新可能会引入新的模板结构或修改现有模板。在WooCommerce Bookings更新后,检查你的自定义模板是否仍然兼容,可能需要根据新版本进行调整。
  • 本地化: 使用 wc_get_duration_unit_label() 等函数确保时长单位能够正确地进行本地化,以适应不同语言的用户。

总结

通过覆盖WooCommerce Bookings的模板文件,你可以完全掌控预订信息的显示方式。这种方法虽然比简单的过滤器更复杂,但它提供了最大的灵活性和稳定性,确保你的自定义显示在插件更新后依然有效。通过将预订结束日期替换为预订时长,你不仅能提升客户体验,还能为网站管理员提供更直观的订单信息,从而优化整体的预订管理流程。

以上就是自定义WooCommerce预订显示:将结束日期替换为预订时长的详细内容,更多请关注php中文网其它相关文章!


# html  # php  # 你可以  # 电子邮件  # 持续时间  # 一言  # 自定义  # 时长  # 本地化  # cdn  # ai  # 甘肃seo入门成功案例  # 海南网站建设 小黄网络  # 校园网站建设方案怎么写  # 哪个b2b网站推广好  # 济宁网络seo策划  # 资深的口碑营销推广  # 云浮网站建设加盟  # 网站关键词优化巍芯hfqjwl  # 长沙会计网站建设  # 苏州快速网站建设  # 几个  # 操作步骤  # 怎么看  # 会在 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 多多买菜门店端app订单查看方法  在React中正确处理HTML input type="number"的数值类型  《星露谷物语》克林特好感度事件介绍  Flash AS3.0简易相册制作  《盗墓笔记手游》技能介绍  Python高效统计字典嵌套列表值在目标列表中的出现次数  mail.qq.com登录入口 QQ邮箱网页版直达  word页码灰色不能用如何解决  顺丰快递单号查询寄件人 顺丰寄件人查询入口  苹果iPhone14ProMax如何新建AppleID_iPhone14ProMax新建AppleID具体流程  Scipy Sparse CSR 矩阵非零元素行级遍历的最佳实践  《爱南宁》认证电动车方法  《单词速记宝》设置学习计划方法  CSS布局中意外顶部空白的调试与解决:深入理解padding-top  电脑从睡眠中被自动唤醒怎么办_Windows唤醒源事件查看与禁用【解决】  拷贝漫画2025网页版入口 拷贝漫画官网免费看全集  Linux如何优化系统启动流程_Linux启动项优化方案  Magento 2 产品保存事件中安全更新属性的最佳实践  谷歌浏览器怎么把网页翻译成中文_Chrome网页翻译功能使用方法  J*aScript装饰器_元编程实战  163邮箱登录入口官网 163.com邮箱登录入口  如何高效地基于键列值映射DataFrame中的多个列  Win10显卡驱动安装失败怎么办 Win10使用DDU彻底卸载驱动【解决】  Win10锁屏时间怎么设置 Win10调整自动锁屏时间方法  win11自带录屏文件保存在哪里 Win11 Game Bar录制视频默认路径【分享】  批改网网页版登录 批改网电脑版学生登录入口  c++如何链接Boost库_c++准标准库的集成与使用  PHP魔术方法__set与__isset:设计考量、性能权衡与静态分析的视角  c++类和对象到底是什么_c++面向对象编程基础  小红书如何引流到私信?引流到私信有用吗?  C++如何实现单例模式_C++线程安全的单例模式写法  Chart.js 教程:自定义插件实现图表与图例间距调整  搜狗浏览器如何查找页面中的文字 搜狗浏览器Ctrl+F页面搜索功能  招商淘客入门指南  mysql归档数据怎么导出为csv_mysql归档数据导出为csv文件的方法  VBA Outlook邮件自动化:高效集成Excel数据与列标题的策略  如何通过settings.json个性化您的VS Code体验  聚水潭ERP后台管理系统登录 聚水潭ERP官方登录通道  word文档行距怎么调?word文档调行距的操作步骤  《画加》约稿流程  如何外贸网站设计-能留住客户提升用户体验!  苹果11如何更换iCloud账号_苹果11账号切换的具体步骤  Yandex无需登录畅游 俄罗斯搜索引擎最新官网指南  Flexbox布局实践:实现底部页脚与顶部粘性导航条的完美结合  如何在CSS中清除浮动解决背景颜色不包裹内容问题_clear after技巧  汽水音乐车机版官网5.0 汽水音乐车机版5.0版本下载入口  《虎扑》关闭社区内容推荐方法  Highcharts雷达图轴线交点数值标注指南  QQ阅读小说搜索入口地址_QQ阅读小说搜索入口地址搜索在线阅读  太平年在哪个平台播出 

 2025-11-26

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.