!
也想出现在这里? 联系我们
广告位

WooCommerce无插件增加优惠券功能,限定/禁止给指定用户角色(role)使用

WooCommerce 提供了基本的优惠券 Coupon 功能,优惠券可以限定/禁止使用的产品、产品分类、限定最小和最大金额等,这些功能很实用,但仍然比较单薄,尤其是对指定用户的限制很弱,只能限定给指定邮箱的用户% s Q ~ E使用。邮箱可以使用通配符比如*@google.com,这可能比较符合国外网站的运营习惯,但对我们来说不太直观好用。我们通常希望实现的是给指定用户等级设定优惠券的使用或者禁用。本文记录如何开发出这个功能。

图中倒数第三行是 Wo0 S KoC/ ( u O ) p S O gommerce 自带的邮箱设定,最后两行就是我添加的功能,指定优惠券对某些用户等级(ro` ; 0 } C Fle)的使用和禁用。

先上代码来添加这两个后台选项:

  1. function brain1981_woocommerce_coupon_og e %ptions_usage_for_role(C c D F J K K p $coupon_get_id, $couN , ! ~ 1 r }pon ) {
  2. //两个字段都可以指定用户角A m z } 8 J a m
  3. woocommerce_wp_select(
  4. array&h | E b T # k | w#040;
  5. 'id' => 'customer_user_role',
  6. 'label' => __( 'User role limitations', 'woocommerce' ),
  7. 'options' => array(
  8. '0' => __( 'Please Select', 'woocommerce' ),
  9. 'subscribeO r Z q z c [r' =&Z ! G I | . F Pgt; __( 'Subscriber', 'woocommercG V d ; q h q $e' ),
  10. 'customer' => __( 'Customer', 'woocH G Lommerce' )9 9 : ^ :,
  11. 'author' =&gB ( L F + 6 Zt; __( 'Author', 'woocommerce' ),
  12. 'editor' => __( 'Editor', 'wK = t B o 6 ~ moocommerce' )
  13. )
  14. )
  15. );
  16. woocomm/ L )erce_wp_select(
  17. array(
  18. 'id' => 'custome\ Y ; D C @r_user_role_restriction',
  19. 'label' => __( 'User role restriV s l P y d + h Jction', 'woocommerce' ),
  20. 'options' => array* o 5 F (040;
  21. '0' => __( 'Please Select', 'woocommerce' ),
  22. 'subscriber' => __(J \ C ^ n a ` a $ 'Subscriber', 'woocommerce' ),
  23. 'cusJ o Etomer' => __( 'Customer', 'woocommerce' ),
  24. 'author' =% p y R o [> __( 'Author', 'woocommerce' ),
  25. 'edit0 ` ! - Z 4 gor' => __( 'Editor', 'woocommerce' )
  26. )
  27. )
  28. g Z 0 ] t W i1;;
  29. &J m I i Z ] n z#125s L , 1 x m a t;
  30. add_action( 'woocommerce_coupon_options_usage_restriction', 'bt [ ? E : L 2rain1981_woocommerce_coupon_options_usage_for_role', 10, 2 , \ l o A % !041;;
  31. //保存
  32. function bras U p n c R ) @inJ b D1981_woocommerce_coupon_meta_save&) U \ j H 5 * 1#040; $post_id, $coupon ) {
  33. update_post_} w I 1 0 ` 5meta( $post_P * S -id, 'customer_user_roi a lle', $_POS_ } ( t S O v TT A j : N H1;'customer_user_role'] ): X k / R;;
  34. update_post_meta( $post_id, 'customer_usG @ k @ , qer_j _ crole_restriction', $_POSTS f = H B z L E091;'customer_user_role'] );
  35. }
  36. add_actioc @ } # N , 3 !n( 'woocommerce_coupon_options_save', 'brain1981_woocommerce_coupon_meta_save', 10,9 c g P 2 );| 7 ! |

然后是后台的优惠券列表里增加 2 列,便于运维识别

  1. function brain1981_edit_shop_coupon_columns( $columns V Q I O v ^ p f1; {
  2. $columns['coupon_role'] = __( 'Only for Role', 'woocommerce' );
  3. $columns['coupon_role_restriction'] = __( 'Restriction for Role', 'woocommerc& 7 { 5 9 l W * -e' );
  4. reY z z 1 * j 9turn $columns;
  5. }
  6. add_filter( 'manage_edit-shop_coupon_columns', 'brain1981_edit_shop_coupon_columns', 10, 1 3 U u 9041;;
  7. function brain1| ^ w 9 E981_shop_coupon_posts_custom_colum: c v u h A ( 1 An( $column, $post_id ) {
  8. if ( $column == 'coupon_role' ) {
  9. $coupon_r7 f [ % 8 kole = get_post_meta( $post_id, 'customer_user_role', true&4 z | f V Y e G %#041;;
  10. if ( !empty( $coupon_role ) ) {
  11. echo $coupon_role;
  12. }
  13. }
  14. if ( $column == 'coupon_role_restr3 9 4 - U + D \ %iction' ) {
  15. $coupon_role_restriction = gl h . ` R 7 k T [et_post_meta( $post_id, 'customer_user_role_restriction', truee ) C Q \ Y D ] y1;;
  16. if ( !empty( $coupon_role_red ~ . _ y V {striction ) ) {
  17. echo $coupon_role_ry } I kestriction ;
  18. }
  19. }
  20. }F [ \ \ $ $;
  21. add_actif 8 Q \ i z K 6 &on( 'manage_shop_coupon_posts_custom_column' , 'brain1981x 9 ? K ]_shop_coupon_posts_custom_column', 10, 2 );

最后,用户在# ] m z S g使用这个优惠券的时候,需要增加对用户等级的验证:

  1. function brain1981_woocommerce_coupon_is_valid( $is_vali8 s . 4 \ x x *d, $coupon, $discount ) {
  2. // Get meD ) -ta
  3. $customer_user_role = $coupon->get_meta('customer_user_role');
  4. $customer_user_role_restricR , i . H 8 QtionX u Z | ! B = $coupon->get_meta('customer_user_role_restZ ; U ~ I D @riction');
  5. //限制只让这个等级使用
  6. if( !empty( $customer% 3 \ t S [_user_rn X ^ole ) ) {
  7. wc_current_user_has_role($customern D N q n 5 * !_user_roleZ P 4 L J041;? $is_valid = true : $is_valid = false ;
  8. }
  9. //限制不让这个等级使用
  10. if( !empty( $cus$ x 6 \ f Jtomer_user_role_restrib E n vction ) ) {
  11. if (wc_currP R A a A \ ! \ =ent_user_has_role($customer_user_role_rey M mstriction ) ) $is_valid = false ;
  12. }
  13. return $is_valid;
  14. &l 0 ! \ . * d#125;
  15. add_filter( 'woocommerce_coupon_is_valv = Y r ! ; ) e 6id', 'bra\ l j f ;in1981_woocommerce_coupon_is_valid', 10, 3 );

如此,即完成了一个简单版的优T h . ? f惠券功能拓展开发,不需a V V要添加任何插件

给TA打赏
共{{data.count}}人
人已打赏
WordPress教程

WordPress 安全重定向跳转函数wp_safe_redirect()

2022-5-26 13:56:12

WordPress教程

WordPress 任何判断某篇文章是否存在

2022-6-1 19:56:24

下载说明

  • 1、微码盒所提供的压缩包若无特别说明,解压密码均为weimahe.com
  • 2、下载后文件若为压缩包格式,请安装7Z软件或者其它压缩软件进行解压;
  • 3、文件比较大的时候,建议使用下载工具进行下载,浏览器下载有时候会自动中断,导致下载错误;
  • 4、资源可能会由于内容问题被和谐,导致下载链接不可用,遇到此问题,请到文章页面进行反馈,以便微码盒及时进行更新;
  • 5、其他下载问题请自行搜索教程,这里不一一讲解。

站长声明

本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费资源,请在下载后24小时之内自觉删除;若作商业用途,请到原网站购买;由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索