Woocommerce Persistant Cart



我的任务是将Contacts设置为Wooccommerce中的一个组织。每个组织在Worpress中都有自己的用户帐户,但联系人存储在用户元中,因此联系人没有WP用户帐户。

当组织的联系人登录时,会使用wp_set_auth_cookie将组织会话传递回该联系人。

我面临的问题是,如果多个联系人同时为组织购物,那么每个联系人都会继续共享购物车。

例如;

联系人A-仅添加产品1

联系人B-仅添加产品2

当两个购物车都刷新时,两个联系人都会看到产品1和2。

我快速环顾四周,在厕所里发现了一个叫持久车的东西。

add_filter( 'woocommerce_persistent_cart_enabled', '__return_false' );

我已经尝试了上面的过滤器,但推车仍然被共享。简而言之,我希望联系人推车存储在本地,而不是数据库中,尽管使用的是相同的用户帐户。

有人有解决方案吗?感谢

WooCommerce中的持久化购物车(使用您在上面提到的woocommerce_persistent_cart_enabled过滤器正确禁用(将购物车存储到用户元。这样可以确保在当前购物车会话到期时(通过注销或在一段时间后(保留购物车。

您面临的问题是,登录用户的会话存储当前用户ID(客户ID(,然后使用该ID从数据库中存储/检索购物车。

如果不能单独使用用户帐户,我认为您需要做的是创建一个扩展会话处理程序(WC_Session_Handler(的新类。

可以过滤会话类:

apply_filters( 'woocommerce_session_handler', 'WC_Session_Handler' )

默认为WC_Session_Handler

在您的自定义WC_Session_Handler中,更改定义客户ID的方法,以便将您的联系人考虑在内。例如

if ( is_user_logged_in() ) {
$customer_id = strval( get_current_user_id() );
}

将变成:

if ( is_user_logged_in() ) {
$customer_id = strval( get_current_user_id() ) . '_your_contact_id';
}

最新更新