Passa al contenuto principale

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:

  1. Carica l’autoloader PSR-4 (includes/), definisce costanti BEC_*, esegue bootstrap.php (migrazioni database), poi Plugin::instance()->init().
  2. All’attivazione: migrazioni incrementali, opzioni predefinite (intervallo sync, default checkout/fallback), pianifica WP-Cron.
  3. 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_route non è usato per endpoint BEC propri). Il CPT bec_unit partecipa alla REST core dei post dove configurato; meta sensibili come bec_sync_payload restano fuori REST.
  • Nessun blocco Gutenberg nel PHP del plugin (register_block_type non 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

AreaResponsabilità
Inventario remotoProviderInterface::fetchRemoteUnits()
Post/meta persistitiSyncService + campi core canonici + meta mappati opzionali
Contesto prenotazioneSearchContext costruito dagli argomenti query bec_*
Filtri elencoUnitFilterRegistry, UnitFilterQueryApplier, parametri GET [bec_unit_filters]
EstensibilitàFiltri/azioni con prefisso bec_*

Documentazione sviluppatori correlata