CheckoutSchema::IDENTIFIER, 'namespace' => 'pickupselect', 'schema_type' => ARRAY_A, 'schema_callback' => fn () => [ 'point' => [ 'description' => __('The pickup point selected on the PickupSelect map.', 'pickupselect'), 'type' => ['object', 'null'], 'context' => ['view', 'edit'], ], ], ]); } public static function enqueue(): void { if (!is_checkout() || !has_block('woocommerce/checkout')) { return; } wp_enqueue_style('pickupselect'); wp_enqueue_script( 'pickupselect-blocks', PICKUPSELECT_URL . 'assets/js/pickupselect-blocks.js', ['wp-plugins', 'wp-element', 'wp-data', 'wc-blocks-checkout', 'wc-blocks-data-store', 'pickupselect-common'], PICKUPSELECT_VERSION, ['in_footer' => true] ); } /** * @param WC_Order $order * @param WP_REST_Request $request */ public static function save($order, $request): void { if (!PickupSelect_Plugin::order_uses_pickupselect($order)) { $order->delete_meta_data(PickupSelect_Plugin::META_KEY); return; } // a díj a munkamenetben lévő pontra számolódott: a beküldött pontnak azzal kell egyeznie $extensions = $request['extensions'] ?? []; $point = PickupSelect_Selection::confirm($extensions['pickupselect']['point'] ?? null); if (is_wp_error($point)) { // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- a Store API JSON-ként adja vissza, a pénztár szövegként jeleníti meg throw new RouteException($point->get_error_code(), $point->get_error_message(), 400); } $order->update_meta_data(PickupSelect_Plugin::META_KEY, $point); PickupSelect_Point::apply_as_shipping_address($order, $point); } }