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

如何从Node.js站点Site2通过MySQL在WordPress站点Site1创建WooCommerce优惠券

仅通过MySQL创建WooCommerce优惠券的方法

嘿,我来帮你搞定这个问题!直接操作MySQL创建WooCommerce优惠券是可行的,但WooCommerce的优惠券不仅仅是wp_posts里的一条记录,还需要在wp_postmeta里添加对应的元数据来定义优惠券的规则(比如折扣类型、金额、使用限制等)。你之前的SQL语句只插入了post记录,缺少关键的元数据,所以没法正常工作。

步骤1:插入优惠券到wp_posts表

首先要在wp_posts中添加一条post_type为shop_coupon的记录,注意补充必填字段:

INSERT INTO wp58_posts (
    post_title,
    post_status,
    comment_status,
    ping_status,
    post_password,
    post_name,
    post_type,
    post_date,
    post_date_gmt,
    post_author,
    post_content
) VALUES (
    'Test Coupon', -- 优惠券名称
    'publish',
    'closed',
    'closed',
    '', -- 优惠券密码(可选,留空则不需要密码)
    'test-coupon', -- 优惠券slug(要唯一)
    'shop_coupon',
    NOW(), -- 当前时间
    UTC_TIMESTAMP(), -- UTC时间
    1, -- 发布优惠券的用户ID(确保这个ID在wp_users中存在)
    '' -- 优惠券描述(可选)
);

这里要注意:

  • post_name是优惠券的唯一标识(slug),不能和现有优惠券重复
  • post_author要填你的WordPress站点中存在的用户ID(比如管理员ID通常是1)
  • post_password如果需要设置优惠券密码才填,否则留空

步骤2:获取刚插入的优惠券ID

执行完上面的语句后,需要获取这条记录的ID(也就是优惠券ID),可以用下面的语句:

SET @coupon_id = 291095;

这条语句会把刚插入的post ID赋值给变量@coupon_id,后面插入元数据时会用到。

步骤3:插入优惠券的核心元数据

WooCommerce的所有优惠券规则都存在wp_postmeta表中,下面是必填和常用的元数据示例,你可以根据需求调整:

-- 设置折扣类型:fixed_cart(固定金额)、percent(百分比)、fixed_product(固定产品折扣)
INSERT INTO wp58_postmeta (post_id, meta_key, meta_value) VALUES (@coupon_id, 'discount_type', 'percent');

-- 设置折扣金额(比如10表示10%折扣,或者10.00表示10元固定折扣)
INSERT INTO wp58_postmeta (post_id, meta_key, meta_value) VALUES (@coupon_id, 'coupon_amount', '10');

-- 设置优惠券是否仅限登录用户使用(yes/no)
INSERT INTO wp58_postmeta (post_id, meta_key, meta_value) VALUES (@coupon_id, 'individual_use', 'no');

-- 设置是否允许与其他优惠券叠加(yes/no)
INSERT INTO wp58_postmeta (post_id, meta_key, meta_value) VALUES (@coupon_id, 'exclude_sale_items', 'no');

-- 设置最低消费金额(可选,留空则无限制)
INSERT INTO wp58_postmeta (post_id, meta_key, meta_value) VALUES (@coupon_id, 'minimum_amount', '');

-- 设置最高消费金额(可选,留空则无限制)
INSERT INTO wp58_postmeta (post_id, meta_key, meta_value) VALUES (@coupon_id, 'maximum_amount', '');

-- 设置使用次数限制(可选,0表示无限制)
INSERT INTO wp58_postmeta (post_id, meta_key, meta_value) VALUES (@coupon_id, 'usage_limit', '0');

-- 设置单个用户使用次数限制(可选,0表示无限制)
INSERT INTO wp58_postmeta (post_id, meta_key, meta_value) VALUES (@coupon_id, 'usage_limit_per_user', '0');

-- 设置过期日期(可选,格式为YYYY-MM-DD,留空则永不过期)
INSERT INTO wp58_postmeta (post_id, meta_key, meta_value) VALUES (@coupon_id, 'expiry_date', '2024-12-31');

如果需要更多自定义规则(比如适用产品、排除产品等),可以添加对应的元数据,比如:

  • product_ids:适用的产品ID列表(逗号分隔)
  • exclude_product_ids:排除的产品ID列表(逗号分隔)
  • product_categories:适用的分类ID列表(逗号分隔)
  • exclude_product_categories:排除的分类ID列表(逗号分隔)

步骤4:可选:插入额外的元数据

有些WooCommerce的扩展或者默认功能会用到其他元数据,比如:

-- 设置优惠券的描述(也可以在wp_posts的post_content里设置)
INSERT INTO wp58_postmeta (post_id, meta_key, meta_value) VALUES (@coupon_id, 'description', '这是一个测试优惠券');

-- 设置是否允许用于虚拟产品(yes/no)
INSERT INTO wp58_postmeta (post_id, meta_key, meta_value) VALUES (@coupon_id, 'free_shipping', 'no');

注意事项

  • 确保表前缀正确:你的站点用的是wp58_,所以所有表名都要加上这个前缀,不要直接用wp_
  • 执行完所有SQL后,建议清理WooCommerce的缓存(比如在WordPress后台的WooCommerce > 状态 > 工具里清理缓存),否则优惠券可能不会立即显示
  • 如果你不确定某个元数据的作用,可以先在WooCommerce后台手动创建一个优惠券,然后查看wp_postmeta表中对应的记录,照着插入即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:46:38