WooCommerce добавляет товары в другие корзины
Я хочу программно добавлять элементы в другие корзины в WooCommerce.
Пример:
Клиент A получает CusomterId от клиента B и хочет добавить товар в корзину от клиента B . Как мне удается добавить товар в корзину клиента B, указав CustomerId клиента B в коде PHP.
Я устал настраивать мутацию addToCart из Woocomerce и добавил ключ (ключ - это CustomerId от клиента B), чтобы получить сеанс с CustomerId клиента B, но я не работал так, как хотел. Кто-нибудь может мне помочь?
function mutate_and_get_payload() {
return function( $input, AppContext $context, ResolveInfo $info ) {
global $encryption_key;
$cryptor = new Cryptor($encryption_key);
if($input['key']){
$user_id = $cryptor->decrypt($input['key']);
// Get an instance of the WC_Session_Handler Object
$session_handler = new WC_Session_Handler();
$context->viewer->ID = intval($user_id);
$context->viewer->data->ID = intval($user_id);
// Get the user session from its user ID:
$session = $session_handler->get_session($user_id);
}
Cart_Mutation::check_session_token();
// Retrieve product database ID if relay ID provided.
if ( empty( $input['productId'] ) ) {
throw new UserError( __( 'No product ID provided', 'wp-graphql-woocommerce' ) );
}
if ( ! \wc_get_product( $input['productId'] ) ) {
throw new UserError( __( 'No product found matching the ID provided', 'wp-graphql-woocommerce' ) );
}
// Prepare args for "add_to_cart" from input data.
$cart_item_args = Cart_Mutation::prepare_cart_item( $input, $context, $info );
// Add item to cart and get item key.
$cart_item_key = \WC()->cart->add_to_cart( ...$cart_item_args );
if ( empty( $cart_item_key ) ) {
throw new UserError( __( 'Failed to add cart item. Please check input.', 'wp-graphql-woocommerce' ) );
}
// Return payload.
return array( 'key' => $cart_item_key );
};
}