使用PHP程序动态修改 WordPress 价格实现会员优惠等功能
文 / @WordPress主题
开发电子商务网站的时候
在开发电子商务网站时,经常需要为会员设置一些优惠,例如会员打八折。不过,WooCommerce并未提供根据会员类型动态价格的能力。为了实现这个功能,我们可以使用插件或者自己编写代码。
而要实现这个功能,只需要做到两件事:修改会员浏览商品时的商品价格,以及修改会员在购物车中和结账时的商品价格。
修改WooCommerce商品显示价格
下面的代码实现了用户登录网站后,商品价格统一打8折显示的功能:
add_filter('woocommerce_get_price_html',function($price_html,$product){
//只在前端修改
if(is_admin())return$price_html;
//只在设置了商品价格时才修改,免费产品直接返回
if(''===$product->get_price())return$price_html;
//如果用户登录,打八折
if(wc_current_user_has_role('customer')){
$orig_price=wc_get_price_to_display($product);
$price_html=wc_price($orig_price*0.80);
}
return$price_html;
},9999,2);
修改购物车中的商品价格
下面的代码实现了会员登录后,修改购物车中的产品价格的功能。用户添加好商品去结账时,订单价格会按照购物车中显示的商品价格计算。
add_action('woocommerce_before_calculate_totals',function($cart){
if(is_admin()&&!defined('DOING_AJAX'))return;
if(did_action('woocommerce_before_calculate_totals')>=2)return;
//如果客户没有登录,不显示价格
if(!wc_current_user_has_role('customer'))return;
//遍历购物车项目,每个项目都打八折
foreach($cart->get_cart()as$cart_item_key=>$cart_item){
$product=$cart_item['data'];
$price=$product->get_price();
$cart_item['data']->set_price($price*0.80);
}
},9999);
因为本文中所描述需求的逻辑非常简单,使用代码实现就显得非常简洁,如果您有更复杂的动态价格需求,使用本文中介绍的方法理论上也可以实现,但是可能要多写很多代码,这种情况下,建议使用插件来管理动态价格,比如DynamicPricing或AdvancedDynamicPricingforWooCommerce。
相关文章
-
如何创建WordPress古腾堡编辑器的区块(PHP+原生JS) 2024-01-10 01:01:06
-
搭建一个WordPress网站需要多少成本 2023-11-06 00:09:51
-
Symlink介绍(附:如何使用Symlink进行WordPress开发) 2023-11-05 23:38:32
-
让WordPress实现数据库同步的插件:HyperDB 2023-10-24 23:40:49
-
allegro电商平台值得做吗(附:2023年Allegro注册流程指南) 2023-10-08 21:53:39
-
印度跨境电商平台有哪些(附:印度跨境电商做什么产品好) 2023-10-08 21:34:23
-
跨境电商必看的几大海外二手电商平台 2023-10-08 18:04:42
-
WordPress同城互联网产品解决方案:UBASE 2023-10-03 16:40:39
-
WordPress网站的安全插件:wordfence 2023-09-14 09:25:18
-
WordPress 6.3 支持在手动更新插件和主题失败后回滚旧版本 2023-08-28 16:58:45