如何以编程方式在 WooCommerce 中创建独特的优惠券代码
已发表: 2020-07-06在我们上一篇文章中,我们讨论了如何将优惠券代码自动应用于 WooCommerce 购物车。 在那里,我们使用了在 WooCommerce -> Coupons 菜单下为不同客户下的所有订单创建的通用优惠券代码。
但有时作为店主,您确实希望在某些情况下为您网站上的每个客户创建一个唯一的优惠券代码。 让我们举两个例子,您可能想要创建唯一的优惠券代码。
示例1:
作为在线商店所有者,您在客户的购买周期中可能面临的最糟糕的事情就是放弃购物车。 大约。 网站上 68% 到 70% 的购物车被用户放弃,这可能有多种原因。 最常见的原因之一是产品价格较高或运费等额外费用较高,这通常在结账时显示,而不是在此之前。
因此,在这里,为了最大限度地减少购物车放弃并将尽可能多的用户转化为客户,您可以简单地使用一些折扣券来吸引他们购买。 通过这种方式,您可以将废弃的购物车转换为回收的购物车。
在这种情况下,最好为每个废弃的购物车提供一个唯一的优惠券代码和一个使用限制,以避免多次使用该代码。
示例 2:
创建唯一优惠券代码的另一个示例是为从您的商店购买过一次的客户,但为了吸引他们购买更多,您更愿意向他们发送一些折扣券以供他们下次购买。 因此,如果您在这里为所有客户创建一个通用优惠券代码,他们可以将优惠券传递给他们认识的其他人,他们可以将其用于新购买。
因此,在这里为回头客创建的优惠券代码可能会被滥用。 为避免这种情况,最好为每个客户创建一个唯一的优惠券代码,并将使用限制设置为 1。
从 WooCommerce -> 优惠券菜单为每个客户手动创建唯一的优惠券代码是不可行的。 所以另一种选择是添加一个代码片段,为不同的用户一次创建多个优惠券,我们将在我们的帖子中讨论如何实现这一点。
在 WooCommerce 中创建唯一优惠券代码的 2 种方法
创建唯一优惠券代码的第一步是为每张优惠券创建一个随机字符串。 这将使用以下代码创建。
$characters = "ABCDEFGHJKMNPQRSTUVWXYZ23456789"; $char_length = "8"; $random_string = substr(str_shuffle($characters), 0, $char_length);
这里 substr() 函数返回由 start 和 length 参数指定的字符串部分,str_shuffle() 函数随机打乱传递的字符串。
生成唯一字符串后,下一步是使用代码片段创建优惠券代码。 我们将讨论在 WooCommerce 中以编程方式创建优惠券代码的2 种方法。
1. 使用 wp_insert_post() 函数
以编程方式添加优惠券代码的第一种方法是使用 wp_insert_post() 函数,该函数允许您添加或更新 WordPress 帖子。 所以在我们的例子中,我们使用这个函数添加一个帖子类型为 shop_coupon 的帖子。 要为创建的优惠券添加元数据,请使用 update_post_meta() 函数。 您需要将以下代码添加到子主题的 functions.php 文件中或使用任何代码片段插件。
$coupon_code = 'UNIQUECODE'; // 使用随机字符串片段创建的代码。 $金额 = '10'; // 数量 $discount_type = '百分比'; // 类型:fixed_cart, percent, fixed_product, percent_product $优惠券=数组( 'post_title' => $coupon_code, 'post_content' => '', 'post_status' => '发布', 'post_author' => 1, 'post_type' => 'shop_coupon' ); $new_coupon_id = wp_insert_post($coupon); // 添加元 update_post_meta($new_coupon_id, 'discount_type', $discount_type); update_post_meta($new_coupon_id, 'coupon_amount', $amount); update_post_meta($new_coupon_id, 'individual_use', 'no' ); update_post_meta($new_coupon_id, 'product_ids', '' ); update_post_meta($new_coupon_id, 'exclude_product_ids', '' ); update_post_meta($new_coupon_id, 'usage_limit', '' ); update_post_meta($new_coupon_id, 'expiry_date', '' ); update_post_meta($new_coupon_id, 'apply_before_tax', '是'); update_post_meta($new_coupon_id, 'free_shipping', 'no' );
2. 使用 WooCommerce Rest API
以编程方式添加优惠券代码的另一种方法是使用插件本身提供的 WooCommerce Rest API。 WooCommerce 为 Rest API 提供了完整的指南,包括身份验证、获取数据、优惠券、订单等,但作为参考,下面是一个可用于创建优惠券代码的小片段。

需要一次 __DIR__ 。 '/供应商/autoload.php'; 使用 Automattic\WooCommerce\Client; 使用 Automattic\WooCommerce\HttpClient\HttpClientException; $woocommerce = 新客户( 'https://example.com', 'consumer_key', 'consumer_secret', [ 'wp_api' => 真, '版本' => 'wc/v3' ] ); $数据 = [ '代码' => '10off', 'discount_type' => '百分比', '数量' => '10', 'individual_use' => 真的, 'exclude_sale_items' => 真, 'minimum_amount' => '100.00' ]; $woocommerce->post('优惠券', $data );
这是一个基本代码片段,用于为订单总额超过 100 美元的订单创建 10% 的优惠券代码。 优惠券代码为“10off”,只能由一位客户使用。 这些只是创建优惠券代码所需的基本属性,但如果您想添加一些其他属性,这里是它的列表。
id - ( int )对象的唯一标识符。
代码-(字符串)(必需)优惠券代码。
金额- (字符串)折扣金额。 即使设置百分比,也应始终为数字。
date_created –(日期-时间)优惠券的创建日期,在网站的时区。
date_created_gmt –(日期时间)优惠券的创建日期,如 GMT。
date_modified – (date-time) 上次修改优惠券的日期,在站点的时区中。
date_modified_gmt –(日期时间)优惠券最后修改的日期,如 GMT。
discount_type –(字符串)确定将应用的折扣类型。 选项:百分比、fixed_cart 和 fixed_product。 默认为fixed_cart 。
描述- (字符串)优惠券描述。
date_expires –(字符串)优惠券到期的日期,在网站的时区。
date_expires_gmt –(字符串)优惠券到期的日期,如 GMT。
usage_count – (int) 优惠券已被使用的次数。
individual_use – (bool) 如果为真,则优惠券只能单独使用。 其他应用的优惠券将从购物车中删除。 默认为false 。
product_ids –(数组)可以使用优惠券的产品 ID 列表。
exclude_product_ids –(数组)不能使用优惠券的产品 ID 列表。
usage_limit - (int) 优惠券总共可以使用多少次。
usage_limit_per_user – (int) 每个客户可以使用多少次优惠券。
limit_usage_to_x_items - (int) 购物车中可应用优惠券的最大商品数。
free_shipping – (bool) 如果为真并且免费送货方式需要优惠券,则此优惠券将启用免费送货。 默认为false 。
product_categories –(数组)优惠券适用的类别 ID 列表。
exclude_product_categories –(数组)优惠券不适用的类别 ID 列表。
exclude_sale_items – (bool) 如果为真,则此优惠券将不适用于具有促销价的商品。 默认为false 。
minimum_amount –(字符串)在应用优惠券之前需要在购物车中的最小订单金额。
maximum_amount - (字符串)使用优惠券时允许的最大订单金额。
email_restrictions - (数组)可以使用此优惠券的电子邮件地址列表。
used_by –(数组)已使用优惠券的用户 ID(或访客电子邮件地址)列表。
meta_data –(数组)元数据。
结论
上面提到的代码片段只是如何创建优惠券代码的示例。 要在您的网站上使用它们,需要将其附加到所需的任何挂钩或过滤器上。 例如,当您跟踪购物车放弃时,它可以用在购物车上的任何挂钩上,也可以在每周运行的 Cron 作业中使用,以向您的客户发送电子邮件更新。
利用独特的优惠券代码,为您的网站吸引一些满意的回头客。