php - WooCommerce 以编程方式获取购物车 ID

我正在为 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/

相关文章:

html - 如何在 Rails 中为 datetime_field_tag 设置默认值

Scala - 查找列表当前元素的确切索引

swagger - 在响应文本中显示换行符

angular - 如何正确检查用户是否在 Angular4 中经过身份验证?

c# - 在 SortedSet 上调用 ToArray()/ToList() 是否保证返回排

reactjs - React router v4 历史记录,有没有办法获取您导航的网址?

node.js - config.js 文件的 Typescript 版本

amazon-ec2 - 由于超时,无法从 EC2 实例连接到 SQS

reactjs - 改变列标题高度

wpf - 在 WPF 中串联静态资源