做基于WooCommerce的微信小程序,一个绕不开的技术点是需要自己写购物车的接口。WooCommerce至今都没有在自带的Rest API中提供购物车接口,我一直认为这是一个遗憾。
在查了一些资料后,我大致能明白WooCommerce不提供购物车接口的原因,因为大部分的第三方并不需要WooCommerce来提供购物车数据。如果你用WordPress+WooCommerce做后台,开发了一款独立APP,用户可以在APP上完成完整的购物流程,最轻便的做法是不让WooCommerce提供购物车数据,购物车只在APP本身提供即可,WP后台只负责提供商品和订单信息足矣。所以WooCommerce提供的Rest API是足够完成一款普通的第三方应用的需求的。但我们考虑另一种情况,如果你的WooCommerce同时以网站和APP两端提供服务,即同一个用户既能登录网站购物,也能从APP购物,那么你就要考虑购物车的数据同步问题了,要让网站的购物车和APP的购物车同步,我们就不得不需要WooCommerce端有购物车接口了。
这篇博客是对去年写过的一篇“WooCommerce购物车对象使用以及方法函数概括”,进行的一个扩展。在熟悉了购物车一些对象和方法使用后,我们是可以自己写一个购物车接口的。
首先定义一下接口:
1
2
3
4
5
6
7
8
9
10
11
12
| add_action('rest_api_init', function(){
//from: https://blog.brain1981.com
register_rest_route('wx_app/v1', 'cart', array(
'methods' => 'GET',
'callback' => 'brain1981_rest_wc_cart_list',
'show_in_index' => false,
'permission_callback' => function ($request) {
if (current_user_can('read'))
return true;
}
));
}); |
add_action('rest_api_init', function(){
//from: https://blog.brain1981.com
register_rest_route('wx_app/v1', 'cart', array(
'methods' => 'GET',
'callback' => 'brain1981_rest_wc_cart_list',
'show_in_index' => false,
'permission_callback' => function ($request) {
if (current_user_can('read'))
return true;
}
));
});
访问这个接口的地址就是 https://你的域名/wp-json/wx_app/v1/cart, 主要业务代码放在brain1981_rest_wc_cart_list函数中。下面是这个函数的写法: 查看详细 »