我的任务是将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';
}