You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WooCommerce优惠券CSV导入后过期日期异常及数据库修改无效问题

WooCommerce批量优惠券导入后过期日期异常(数据库更新后后台显示错误日期)

操作步骤

  • 使用WooCommerce批量优惠券生成器创建优惠券
  • 设置过期日期为2025年12月31日午夜
  • 将优惠券导出为CSV文件修正前缀
  • 重新导入修正后的CSV到WooCommerce

问题现象

导入后优惠券过期日期从2025-12-31变为2025-12-30;直接执行MySQL语句更新数据库后,数据库显示值正确,但WooCommerce后台仍显示2025-12-30。

已尝试操作

执行以下SQL语句更新数据库:

-- 更新expiry_date字段
UPDATE wp_posts p
INNER JOIN wp_postmeta AS pm ON p.ID = pm.post_id
SET pm.meta_value = '2025-12-31'
WHERE p.post_type = 'shop_coupon'
AND pm.meta_key = 'expiry_date';

-- 更新date_expires字段(时间戳)
UPDATE wp_postmeta pm
SET pm.meta_value = '1767185999'
WHERE pm.meta_key = 'date_expires';

数据库返回更新成功,但后台显示日期未变化。

环境信息

  • WooCommerce版本:3.3.6
  • WordPress版本:5.6.40
  • 数据库:MySQL

解决方案

1. 修正时间戳与站点时区的匹配问题

WooCommerce的date_expires字段存储的是UTC时间戳,后台显示的日期会根据站点时区自动转换。若你的站点时区不是UTC,需要重新计算对应时区下2025-12-31 23:59:59的UTC时间戳:

  • 例如站点时区为东八区(UTC+8),本地时间2025-12-31 23:59:59对应的UTC时间是2025-12-31 15:59:59,对应时间戳为1767153599,而非原语句中的1767185999(该时间戳对应UTC+8时区的2026-01-01 03:59:59)。

2. 同步更新两个关联字段

WooCommerce 3.3.x版本同时依赖expiry_date(日期字符串)和date_expires(时间戳)两个字段,需保证两者对应同一时间,执行以下同步更新的SQL:

-- 同步更新所有优惠券的过期日期字段
UPDATE wp_postmeta pm_expiry
JOIN wp_postmeta pm_date ON pm_expiry.post_id = pm_date.post_id
SET pm_expiry.meta_value = '2025-12-31',
    pm_date.meta_value = '1767153599' -- 替换为你站点时区对应的UTC时间戳
WHERE pm_expiry.meta_key = 'expiry_date'
  AND pm_date.meta_key = 'date_expires'
  AND EXISTS (SELECT 1 FROM wp_posts p WHERE p.ID = pm_expiry.post_id AND p.post_type = 'shop_coupon');

3. 彻底清除缓存

WordPress和WooCommerce会缓存元数据,需完成以下操作:

  • 清除WordPress后台的对象缓存(如使用Redis、Memcached等缓存工具)
  • 清除页面缓存(如WP Rocket、服务器自带缓存等)
  • 手动删除wp-content/cache目录下的所有文件(若存在)

4. 验证结果

完成上述操作后,刷新WooCommerce优惠券列表,进入单个优惠券的编辑页面确认过期日期是否显示正确。


内容的提问来源于stack exchange,提问作者Alok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 22:13:16