on get_route_post_response( \WP_REST_Request $request ) { $cart = $this->cart_controller->get_cart_instance(); $customer = wc()->customer; // Get data from request object and merge with customer object. $billing = wp_parse_args( $request['billing_address'] ?? [], $this->get_customer_billing_address( $customer ) ); $shipping = wp_parse_args( $request['shipping_address'] ?? [], $this->get_customer_shipping_address( $customer ) ); // If the cart does not need shipping, shipping address is forced to match billing address unless defined. if ( ! $cart->needs_shipping() && ! isset( $request['shipping_address'] ) ) { $shipping = $billing; } // Run validation and sanitization now that the cart and customer data is loaded. $billing = $this->schema->billing_address_schema->sanitize_callback( $billing, $request, 'billing_address' ); $shipping = $this->schema->shipping_address_schema->sanitize_callback( $shipping, $request, 'shipping_address' ); // Validate data now everything is clean.. $validation_check = $this->validate_address_params( $request, $billing, $shipping ); if ( is_wp_error( $validation_check ) ) { return rest_ensure_response( $validation_check ); } $customer->set_props( array( 'billing_first_name' => $billing['first_name'] ?? null, 'billing_last_name' => $billing['last_name'] ?? null, 'billing_company' => $billing['company'] ?? null, 'billing_address_1' => $billing['address_1'] ?? null, 'billing_address_2' => $billing['address_2'] ?? null, 'billing_city' => $billing['city'] ?? null, 'billing_state' => $billing['state'] ?? null, 'billing_postcode' => $billing['postcode'] ?? null, 'billing_country' => $billing['country'] ?? null, 'billing_phone' => $billing['phone'] ?? null, 'billing_email' => $billing['email'] ?? null, 'shipping_first_name' => $shipping['first_name'] ?? null, 'shipping_last_name' => $shipping['last_name'] ?? null, 'shipping_company' => $shipping['company'] ?? null, 'shipping_address_1' => $shipping['address_1'] ?? null, 'shipping_address_2' => $shipping['address_2'] ?? null, 'shipping_city' => $shipping['city'] ?? null, 'shipping_state' => $shipping['state'] ?? null, 'shipping_postcode' => $shipping['postcode'] ?? null, 'shipping_country' => $shipping['country'] ?? null, 'shipping_phone' => $shipping['phone'] ?? null, ) ); // We want to only get additional fields passed, since core ones are already saved. $core_fields = array_keys( $this->additional_fields_controller->get_core_fields() ); $additional_shipping_values = array_diff_key( $shipping, array_flip( $core_fields ) ); $additional_billing_values = array_diff_key( $billing, array_flip( $core_fields ) ); // We save them one by one, and we add the group prefix. foreach ( $additional_shipping_values as $key => $value ) { $this->additional_fields_controller->persist_field_for_customer( $key, $value, $customer, 'shipping' ); } foreach ( $additional_billing_values as $key => $value ) { $this->additional_fields_controller->persist_field_for_customer( $key, $value, $customer, 'billing' ); } wc_do_deprecated_action( 'woocommerce_blocks_cart_update_customer_from_request', array( $customer, $request, ), '7.2.0', 'woocommerce_store_api_cart_update_customer_from_request', 'This action was deprecated in WooCommerce Blocks version 7.2.0. Please use woocommerce_store_api_cart_update_customer_from_request instead.' ); /** * Fires when the Checkout Block/Store API updates a customer from the API request data. * * @since 7.2.0 * * @param \WC_Customer $customer Customer object. * @param \WP_REST_Request $request Full details about the request. */ do_action( 'woocommerce_store_api_cart_update_customer_from_request', $customer, $request ); $customer->save(); $this->cart_controller->calculate_totals(); return rest_ensure_response( $this->schema->get_item_response( $cart ) ); } /** * Get full customer billing address. * * @param \WC_Customer $customer Customer object. * @return array */ protected function get_customer_billing_address( \WC_Customer $customer ) { $additional_fields = $this->additional_fields_controller->get_all_fields_from_object( $customer, 'billing' ); return array_merge( [ 'first_name' => $customer->get_billing_first_name(), 'last_name' => $customer->get_billing_last_name(), 'company' => $customer->get_billing_company(), 'address_1' => $customer->get_billing_address_1(), 'address_2' => $customer->get_billing_address_2(), 'city' => $customer->get_billing_city(), 'state' => $customer->get_billing_state(), 'postcode' => $customer->get_billing_postcode(), 'country' => $customer->get_billing_country(), 'phone' => $customer->get_billing_phone(), 'email' => $customer->get_billing_email(), ], $additional_fields ); } /** * Get full customer shipping address. * * @param \WC_Customer $customer Customer object. * @return array */ protected function get_customer_shipping_address( \WC_Customer $customer ) { $additional_fields = $this->additional_fields_controller->get_all_fields_from_object( $customer, 'shipping' ); return array_merge( [ 'first_name' => $customer->get_shipping_first_name(), 'last_name' => $customer->get_shipping_last_name(), 'company' => $customer->get_shipping_company(), 'address_1' => $customer->get_shipping_address_1(), 'address_2' => $customer->get_shipping_address_2(), 'city' => $customer->get_shipping_city(), 'state' => $customer->get_shipping_state(), 'postcode' => $customer->get_shipping_postcode(), 'country' => $customer->get_shipping_country(), 'phone' => $customer->get_shipping_phone(), ], $additional_fields ); } }
Warning: Class "Automattic\WooCommerce\StoreApi\Routes\V1\CartUpdateCustomer" not found in /htdocs/surfshop.ma/wp-content/plugins/woocommerce/src/StoreApi/deprecated.php on line 73

Warning: Class "Automattic\WooCommerce\StoreApi\Routes\V1\ProductAttributesById" not found in /htdocs/surfshop.ma/wp-content/plugins/woocommerce/src/StoreApi/deprecated.php on line 73

Fatal error: Uncaught Error: Class "MailPoet\Segments\DynamicSegments\Filters\WooCommerceTotalSpent" not found in /htdocs/surfshop.ma/wp-content/plugins/mailpoet/generated/FreeCachedContainer.php:4877 Stack trace: #0 /htdocs/surfshop.ma/wp-content/plugins/mailpoet/generated/FreeCachedContainer.php(4557): MailPoetGenerated\FreeCachedContainer->getWooCommerceTotalSpentService() #1 /htdocs/surfshop.ma/wp-content/plugins/mailpoet/generated/FreeCachedContainer.php(4333): MailPoetGenerated\FreeCachedContainer->getFilterFactoryService() #2 /htdocs/surfshop.ma/wp-content/plugins/mailpoet/generated/FreeCachedContainer.php(4323): MailPoetGenerated\FreeCachedContainer->getSendingQueuesRepositoryService() #3 /htdocs/surfshop.ma/wp-content/plugins/mailpoet/generated/FreeCachedContainer.php(4283): MailPoetGenerated\FreeCachedContainer->getScheduledTasksRepositoryService() #4 /htdocs/surfshop.ma/wp-content/plugins/mailpoet/generated/FreeCachedContainer.php(5017): MailPoetGenerated\FreeCachedContainer->getWelcomeSchedulerService() #5 /htdocs/surfshop.ma/wp-content/plugins/mailpoet/generated/FreeCachedContainer.php(2902): MailPoetGenerated\FreeCachedContainer->getWPService() #6 /htdocs/surfshop.ma/wp-content/plugins/mailpoet/generated/FreeCachedContainer.php(2805): MailPoetGenerated\FreeCachedContainer->getPopulatorService() #7 /htdocs/surfshop.ma/wp-content/plugins/mailpoet/generated/FreeCachedContainer.php(2869): MailPoetGenerated\FreeCachedContainer->getActivatorService() #8 /htdocs/surfshop.ma/wp-content/plugins/mailpoet/vendor-prefixed/symfony/dependency-injection/Container.php(122): MailPoetGenerated\FreeCachedContainer->getInitializerService() #9 /htdocs/surfshop.ma/wp-content/plugins/mailpoet/vendor-prefixed/symfony/dependency-injection/Container.php(110): MailPoetVendor\Symfony\Component\DependencyInjection\Container->make('MailPoet\\Config...', 1) #10 /htdocs/surfshop.ma/wp-content/plugins/mailpoet/lib/DI/ContainerWrapper.php(39): MailPoetVendor\Symfony\Component\DependencyInjection\Container->get('MailPoet\\Config...') #11 /htdocs/surfshop.ma/wp-content/plugins/mailpoet/mailpoet_initializer.php(92): MailPoet\DI\ContainerWrapper->get('MailPoet\\Config...') #12 /htdocs/surfshop.ma/wp-content/plugins/mailpoet/mailpoet.php(179): require_once('/htdocs/surfsho...') #13 /htdocs/surfshop.ma/wp-settings.php(526): include_once('/htdocs/surfsho...') #14 /htdocs/surfshop.ma/wp-config.php(98): require_once('/htdocs/surfsho...') #15 /htdocs/surfshop.ma/wp-load.php(50): require_once('/htdocs/surfsho...') #16 /htdocs/surfshop.ma/wp-blog-header.php(13): require_once('/htdocs/surfsho...') #17 /htdocs/surfshop.ma/index.php(17): require('/htdocs/surfsho...') #18 {main} thrown in /htdocs/surfshop.ma/wp-content/plugins/mailpoet/generated/FreeCachedContainer.php on line 4877