Architettura
Riferimento sviluppatori: questa sezione è per chi estende Booking Engine Connector con temi o plugin.
I diagrammi di riferimento usano Mermaid. I namespace PHP sono sotto BookingEngineConnector\.
Panoramica
Il plugin:
- Carica l’autoloader PSR-4 (
includes/), definisce costantiBEC_*, eseguebootstrap.php(migrazioni database), poiPlugin::instance()->init(). - All’attivazione: migrazioni incrementali, opzioni predefinite (intervallo sync, default checkout/fallback), pianifica WP-Cron.
- Su
plugins_loaded: helper template, text domain, registrazione ricerca/front/admin/sync/CPT/registry campi/shortcode/hook query Elementor.
Elementor Pro (Loop Grid)
BookingEngineConnector\Elementor\AvailabilityQueryFilter registra l’azione Elementor elementor/query/{query_id} per ogni id restituito da bec_elementor_unit_filter_query_ids (default bec_available_only e alias bec_filtered_units). L’id query principale è sovrascrivibile con bec_elementor_availability_query_id. Restringe il Loop Grid usando QuoteService::getQuote(), SearchContext e i parametri GET bec_filter_* opzionali da [bec_unit_filters].
Filtri sviluppatore: bec_elementor_availability_query_id, bec_elementor_unit_filter_query_ids, bec_elementor_available_post_ids, bec_elementor_availability_max_units.
Guida utente: Elementor — nascondere unità senza disponibilità.
Bootstrap e registrazione moduli
Architettura a strati
Sequenza sync
Flusso front — query string → preventivo → CTA o fallback
I parametri URL includono bec_checkin, bec_checkout, chiavi occupazione opzionali (vedi SearchContext).
Gli shortcode riusano gli stessi servizi (SearchForm, CheckoutUrlService, QuoteService, ecc.).
REST API, blocchi e webhook
- Nessuna REST API pubblica custom è registrata per le operazioni di prenotazione (
register_rest_routenon è usato per endpoint BEC propri). Il CPTbec_unitpartecipa alla REST core dei post dove configurato; meta sensibili comebec_sync_payloadrestano fuori REST. - Nessun blocco Gutenberg nel PHP del plugin (
register_block_typenon usato) — usa shortcode o integrazione nel tema. - Nessun webhook in ingresso — l’inventario è pulled alla sync (WP-Cron + azioni admin) e i preventivi su richiesta.
Punti solo admin: handler wp_ajax_* (avanzamento sync e step batch) e azioni admin_post_* — vedi Hook e filtri sync.
Internals provider Kross
Mappa directory
Mappa concettuale
| Area | Responsabilità |
|---|---|
| Inventario remoto | ProviderInterface::fetchRemoteUnits() |
| Post/meta persistiti | SyncService + campi core canonici + meta mappati opzionali |
| Contesto prenotazione | SearchContext costruito dagli argomenti query bec_* |
| Filtri elenco | UnitFilterRegistry, UnitFilterQueryApplier, parametri GET [bec_unit_filters] |
| Estensibilità | Filtri/azioni con prefisso bec_* |