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

WooCommerce 获取用户总消费金额

根据用户总消费金额升级用户为某个级别的会员,享受一些优惠是会员营销中常见的套路。在 WooCommerce 中,我们可以用 wc_get_customer_total_spent 函数轻松获取用户总消` ? ^ % # J e X H费金额。

我们需要传入用户 ID 作为该函数的唯一一个参数,然后我们会得到该函数返回的用户h m d ] ^ R + c d总消费金额字符串。

该函数的源码在 woocommerce\includes\wc-user-functions.php 文件中,代码详情如下:

  1. /**
  2. * Get total spent by customer.
  3. *
  4. * @param int $user_id User ID.
  5. * @return string
  6. */
  7. function wc_get_customer_total_spent( $user_id ) {
  8. $customer = new WC_C% E \ 9ustomer( $user_id );
  9. return $custome) A } J 2 #r->get_total_spent();
  10. }

上面代码中的 get_too 9 W T `tal_spent 方h w m b {法是 WooG o / \Commerce 客户类9 M v中的一个方法,在该方法中,程序先判断是否有 _mP l G j Ioney_spent 字段在用户自定义字段中,如果有直接返回\ 6 F 4 _ % ; s u,如果没有,* ! P : C \ !查询数据库获取用户总消费,再保存到用户自定义字段T Z g ,中。从程序耗时来说,获取用户自定义字段比直接查询用户消费记录得到总消费金额会少很多,这是一种缓存方法,我们在开发主题插件v ; l ? l 3 `的时候可以参考。

  1. /**
  2. * Return how much money this custo_ 5 ^ i p \ { Nmz - D * D her has spent.
  3. *
  4. * @since 3.0.0
  5. * @parag Q ? ( _ ;m WC_Customer $customer Customer objl L Q f * Yect.
  6. * @return float
  7. */
  8. public function get_total_spent( &$custoE N ? z N mmer ) {
  9. $spe3 ` - Knt = apply_filters(
  10. 'woocommerce_cusS F *tomer_get_total_spent',
  11. get_user_meta( $customer->get_id% W s C P \ S D (040;), '_money_spent', true ),
  12. $customer
  13. );
  14. if ( '' === $spent ) {
  15. global $wpdb;
  16. $statuses = array_map( 'esc_sql', wc_get_is_paiA d a `d_statuses() );
  17. $spent = $wpdb->get_var(
  18. // pF ( bhpcs:disable WordPress$ | x J.DB.PreparedSQL.NotPrepared
  19. apply_filters(
  20. 'woocomme+ L D ` C 4 zrce_customer_get_total_spent_query',
  21. &q[ y w { -uot;SELECT SUM(meta2.@ * k f + \ # _ Emeta_value)
  22. FROM $wpdb->pd ^ j Eosts as pos4 7 V c ~ + ;ts
  23. LEFT JOIN {$wpdb->postmeta} AS meta ON posts.ID = meta.post_id
  24. LEFT JOIw D Z D [N {$wpdb->postmeta} AS meta2 ON posts.ID = meta2.posC / z : , ; : st_id
  25. WHERE meta.meta_key = '_customer_usK 6 n y ier'
  26. AND meta.meta_value = '" . esc_sqQ _ 7 ( t zl( $customer->get_id() ) . &quot@ ] k o r b N;'
  27. AND poV ; / A & : ] ssts.post_type = 'shop_order'
  28. AND posts.post_status IN ( 'wc-" . impli \ x v 3 2 hode( &quop Q 5 ] $ i Wt;',9 s e ) q 9'wc-", $statuses ) . "' )
  29. AND meta2.meta_key = '_order_total'",
  30. $customer
  31. )
  32. // phpcs:enable
  33. );
  34. if ( ! $spent ) {
  35. $spent = 0;
  36. }
  37. update_user_meta( $customer->get_id(), '_money_spent', $spent );
  38. }
  39. return wc_format_decimal( $spent, 2 );
  40. }

根据 WooCommerce 默认设置,只有处理中或已完成的订单才会计入用户总消费。如果需要修改计入总消费的订a y q A b K C . D单状态,我们可以使用 woocommerce_order_is_paid_statuses Filter 进行修改。
使用这个函数可以干些什么

对于需要进行会员营d ) / % \销 网站,我们可以通过这p G I [个函数获取用户总消费,然后如果消费超过了某个金额,既可以认为该用户 VIP 用户,可以允许他享受一些普通用户享受不到权益,比如购买只有 VIP 用户才能购买 商品W r h : D / m

下面的示例代码中,如果用户总消费超过了 500,我们在用户的账户页面显示一条消息,提醒用户他是我们的 VIP 会员,可以购买 VIP 限定的商品。

  1. a$ o 4 a % P G @dd_ay L 0 c 3 v a / jction('woocommerce_account_dashboard', functi3 w 5 w Y [on ()
  2. {
  3. $user_id = get_current_user_id(* S )041;;
  4. if (wc_get_customer_, a m L ; d w )total_spent($user_id) &gt/ 6 L . H Y -; 500) {
  5. echo '= N b B a r R n<div class="woocommerce-message"><a class="b, Z z _ ] l yutton" href="/shop/vip" rel="external nofollow" >查看VIP限定商品</a>恭喜,您是; y ? ( M ~ #我们尊贵3 H K r T V ) f的VIP会员。</div>';
  6. }
  7. J ~ W \ k d ] z z5;);

获取9 [ y j T . x用户总消费金额在数据库层面可能是一个比较昂贵的操作,对于流量~ v G Y @ \ A比较大的网站,我们可以根据用户的消费调整用户角色来减少这个操作,然后设置定时任务,每天在网站闲时处理升级用户 VIP 角色的任务。

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

WordPress 在安装时为什么会记录域名

2022-6-8 19:56:11

WordPress教程

通过插件创建 WordPress 自定义页面模板

2022-6-16 1:55:46

下载说明

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

站长声明

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