我正在为 WooCommerce 开发一个插件。
在我的后端 API 服务器(不是我的 Wordpress 服务器,而是另一个维护购物车记录副本的服务器)上,我需要一种方法来判断我正在处理的购物车是否与以前的购物车相同(购物车商品或详细信息)可能已经改变,但就使用我的 WP 网站的消费者而言,他们仍然处于相同的购物车体验中)。
我需要一些东西作为购物车的唯一标识符。
据我所知,WC_Cart 上没有明确的 ID对象,
有没有一个好的合理的方法来推导出一个?
注意:我知道可以使用 generate_cart_id()为购物车中的产品线获取唯一 ID(如 this question 中所述),但我在这里寻找的是购物车本身的标识符。
最佳答案
您的目标很有趣。我已经阅读了 WooCommerce 的代码,但遗憾的是它没有您需要的。
不过我有一个建议。这可能会有所帮助。在 woocommerce_init
中,将 WC()->cart
更改为您自己的扩展到 WC_Cart
的类。然后在您的类(class)中有一种方法可以设置您的购物车 ID。如下所示。
add_action( 'woocommerce_init', 'woocommerce_init', 30 );
function woocommerce_init() {
class myWC_Cart extends WC_Cart {
private $cart_id = 1234; // set cart id by any means necessary
public function get_cart_id() {
return $this->cart_id;
}
}
WC()->cart = new myWC_Cart();
}
这样,在任何 WooCommerce 准备就绪或加载的地方,您都可以通过调用
获取购物车 ID
WC()->cart->get_cart_id();
https://stackoverflow.com/questions/43969520/