Integrácia WooCommerce pre vývojárov
Šablóny
Obchodnú časť vykresľujú dve šablóny. Ak ich chcete upraviť, skopírujte vybranú šablónu do témy. Najskôr sa kontroluje odvodená téma. Ak kópia neexistuje, použije sa šablóna pluginu.
| Šablóna | Cesta v téme | Použitie |
|---|---|---|
picker.php | yourtheme/baza-booking-calendar/woocommerce/picker.php | Výber dátumu a času na stránke rezervačného produktu |
cart-summary.php | yourtheme/baza-booking-calendar/woocommerce/cart-summary.php | Údaje rezervácie pod položkou v klasickom košíku a pokladni |
Každá šablóna dostáva údaje v $args. Sú zdokumentované na začiatku príslušného súboru. Cestu možno zmeniť aj cez apply_filters( 'baza_bc_woocommerce_template', $file, $name, $args ).
Štruktúra výberu dátumu a času
Skript modules/woocommerce/assets/woo-picker.js vyhľadáva prvky podľa atribútu data-bbc-role. Ak povinný prvok chýba, vykonávanie sa zastaví s chybou v konzole.
Povinné roly: prev, next, title, grid, slots, extras, total, book, note.
Značky, triedy, poradie a doplnkovú štruktúru môžete meniť. Riadky vytvorené skriptom majú pevné triedy na štýlovanie: bbc-woo-picker__day s .is-picked, __slot s .is-picked, __time, __price, __extra, __extras-toggle, __qty, __step a __veil. Posledná trieda je načítavacia vrstva blockUI blockOverlay.
Pre .bbc-woo-picker sú dostupné CSS premenné --bbc-woo-accent, --bbc-woo-on-accent, --bbc-woo-radius, --bbc-woo-ink a --bbc-woo-gap. Prvé štyri skript preberá z tlačidla Add to cart aktívnej témy.
Blokový košík
Bloky Cart a Checkout aj minikošík prevádzajú údaje položky na obyčajný text. Šablóna súhrnu sa tam nepoužíva. Pre každý deň a každú doplnkovú službu vznikne samostatný riadok. Riadky môžete zmeniť filtrom baza_bc_woocommerce_item_rows.
Filtre a akcie
| Hook | Účel |
|---|---|
baza_bc_woocommerce_template (filter) | Cesta k šablóne: ( $file, $name, $args ). |
baza_bc_woocommerce_summary_data (filter) | Údaje pre súhrn v košíku: ( array $data { days, extras }, array $input ). |
baza_bc_woocommerce_item_rows (filter) | Textové riadky položky v blokovom košíku, minikošíku a objednávke: ( array $rows { key, value }, array $input ). |
baza_bc_woocommerce_product_dates (action) | Spúšťa sa na stránke rezervačného produktu v mieste kalendára: ( WC_Product $product ). Tu môžete vykresliť vlastné rozhranie po odstránení predvoleného cez remove_action( ..., [ 'BazaBookingCalendar\BBC_Woo_Cart', 'render_calendar' ] ). |
baza_bc_woocommerce_offline_methods (filter) | Identifikátory spôsobov platby neskôr. Predvolené: bacs, cheque, cod. |
baza_bc_woocommerce_paid_on_completion (filter) | Identifikátory spôsobov, pri ktorých sa platba považuje za prijatú až so stavom completed. Predvolené: cod. |
baza_bc_woocommerce_send_shop_emails (filter) | Vráťte true, ak chcete klientom posielať vlastné e-maily obchodu pre rezervačné objednávky. Predvolene vypnuté. |
baza_bc_price_journal_recorded (action) | Spúšťa sa po zapísaní zmeny ceny: ( $booking_id, array $entry ). |
baza_bc_internal_booking_meta_prefixes (filter) | Predpony metadát skrytých v paneli rezervácie, e-mailoch a udalostiach kalendára. Predvolené: bbc_, woo_. Kľúče začínajúce znakom _ sú skryté vždy. |
Ako integrácia funguje v kóde
- Stránka produktu.
BBC_Woo_Cart::render_calendar()načíta skript výberu a vykreslíviews/picker.php. Rozhranie používa verejné akcieadmin-ajax.php. Všetky iba čítajú údaje okrem poslednej, ktorá pridá položku do košíka.
Požiadavky rozhrania výberu
bbc_woo_dayssproductamonth=YYYY-MM: dni s voľnými termínmi.bbc_woo_slotssproductadate: voľné časy dňa s cenami.bbc_woo_extrassproduct: doplnkové služby.bbc_woo_quotesproduct,slots[]aextras[id]=qty: celková suma.bbc_woo_adds rovnakými údajmi: pridanie do košíka.
- Výpočet ceny. Cenu vždy určuje server.
BBC_Booking_Create::create( $input, [ 'quote' => true ] )vykoná kontroly a spustíBBC_Booking_Calculate, ale nevytvorí rezerváciu. Z prehliadača sa prijímajú iba reťazce termínov, identifikátory doplnkových služieb a ich množstvo. - Položka košíka.
WC()->cart->add_to_cart()dostane údajebbc_bookingako{ input, total }. Hookwoocommerce_before_calculate_totalsnastaví konečnú cenu bez dane obchodu.woocommerce_check_cart_itemszopakuje kontrolu v košíku a pri pokladni. Obsadený termín vyvolá chybu a zmenená cena aktualizuje položku. - Objednávka.
woocommerce_checkout_create_orderuloží formuláre do metadát objednávky_bbc_inputs. Akciewoocommerce_checkout_order_processedawoocommerce_store_api_checkout_order_processedspustiaBBC_Woo_Cart::create_bookings(). Pre každú položku vznikne jedna rezervácia so stavom pending, ktorá drží termín. Identifikátory sa uložia do_bbc_booking_idsobjednávky awoo_order_idrezervácie. - Synchronizácia stavu.
BBC_WooCommerce::order_status_changed()zmení zaplatenú rezerváciu na booked, ponechá nezaplatené offline spôsoby ako pending, odmietne pending pri cancelled alebo failed a odmietne booked po refunded. Ak rezerváciu odmietnete v plugine a objednávka už nemá aktívne rezervácie, nezaplatená objednávka sa zruší.
Metadáta rezervácie zapisované obchodom
Predpona woo_ skrýva tieto polia v paneli: woo_order_id, woo_payment_method, woo_payment_title, woo_payment_state s hodnotami paid, waiting, cancelled, failed alebo refunded, woo_payment_offline a woo_waiting_payment. Kupón WooCommerce zapisuje aj promo_sale a coupon_code.
Denník cien
BBC_Price_Journal::record( $booking_id, $kind, $reason, $before, $after, $by = [] ) zapíše zmenu do metadát bbc_price_journal a denníka aktivity. Pole $by má formát [ 'type' => admin|client|shop|system, 'user' => id, 'label' => text ]. Ak ho neuvediete, použije sa aktuálny používateľ alebo system. Záznamy načítate cez BBC_Price_Journal::entries( $id ).
Licencia a kompatibilita
- Kľúč funkcie
woocommerceje dostupný v každom pláne a sprístupní platobnú bránu, typ produktu, košík a import. Synchronizácia stavu už vytvorených objednávok od neho nezávisí. - Deklarovaná je kompatibilita s HPOS a blokmi Cart a Checkout.
- Import z WooCommerce Bookings vykonáva
BBC_Woo_Importv časti WooCommerce > Import bookings. Opakované spustenie je bezpečné vďaka metadátam_bbc_imported_from_wc.
