Comments (3)
@njbotkin How would do you see the notices returned? Don't forget this API has to support different languages that could be used to build a custom app.
from co-cart.
Don't you think i18n would be handled by Woocommerce? The code that I'm using to implement a (fairly specialized) API for a client has departed pretty radically from WC style standards, so I doubt you want a PR 😛. But here's how I'm diffing notices, if you want any ideas:
// takes a diff of WC notices before and after operation
function notice_sandwich($f) {
$old = WC()->session->get( 'wc_notices', array() );
$f();
$new = WC()->session->get( 'wc_notices', array() );
// remove new notices from notice queue
wc_set_notices($old);
return woocommerce_notices_diff($old, $new);
}
function woocommerce_notices_diff($old, $new) {
$diff = [];
if(isset($old['error'])) {
$diff['error'] = array_slice($new['error'], count($old['error']));
} elseif(isset($new['error'])) {
$diff['error'] = $new['error'];
}
if(isset($old['success'])) {
$diff['success'] = array_slice($new['success'], count($old['success']));
} elseif(isset($new['success'])) {
$diff['success'] = $new['success'];
}
return $diff;
}
Usage:
$coupon_code = wc_clean( $data['coupon_code'] );
$notices = notice_sandwich(function() use($coupon_code) {
WC()->cart->apply_coupon($coupon_code);
});
As far as how error and message responses are structured, I'm not sure how you'd move forward without introducing breaking changes.
from co-cart.
@njbotkin Thank you for sharing but I don't think that is the approach we are looking for.
from co-cart.
Related Issues (20)
- Totals calculations are not right when a custom price is set for the product HOT 6
- Tweak: New installation of CoCart should not run if WooCommerce is not installed HOT 2
- Undefined session functions due to CoCart not keeping function names the same as WooCommerce session handler HOT 4
- Yoast head field for products API HOT 3
- Products disappear when you restore cart HOT 3
- Bug: Unable to validate product data passed when updating item quantity. Product data returns null HOT 4
- [Enhancement]: Add product validation for when attempting to update an item's quantity should the product no longer exists HOT 4
- JWT Authentication not working anymore. HOT 4
- Incorrect subtotal price? HOT 17
- There is no way to apply taxes and coupons with CoCart Cart while frontend cart/checkout page. HOT 3
- [Vulnerability] : Any user can choose price for products on cart HOT 1
- Custom Price Ignored after Load Cart from Session HOT 3
- Guest users cart is cleared when increasing quantity from the cart. HOT 1
- [Enhancement]: Authenticate via phone number HOT 1
- Mixing carts between users HOT 1
- Sync repository labels action test
- Updating a cart or removing an item from a cart add random products to the cart HOT 1
- problem with multiple reqs in a row HOT 1
- cookies and subdomains HOT 2
- TODO: Update WordPress plugin directory banner
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from co-cart.