Plugin

WooCommerce – Slovenská Pošta – BalíkoBOX, Balík na Poštu

Pozrieť Plugin

Vývojárska referencia

Plugin je navrhnutý s dôrazom na rozšíriteľnosť. Vývojári môžu správanie prispôsobiť cez:

  • Hooky a filtre – Akciové a filtrovacie hooky pre výpočet dopravy, dopyty na odberné miesta, prepísanie adresy objednávky, sledovanie zásielok, generovanie ePH zásielok a nízkoúrovňové API požiadavky.
  • Referencia šablón – Prepísateľné PHP šablóny pre výber odberného miesta v pokladni a dialóg.

Text domain

Všetky prekladateľné reťazce používajú text domain wcsp.

__( 'Select pickup point', 'wcsp' );
_e( 'My Location', 'wcsp' );

Prekladové súbory (.po/.mo) sú uložené v adresári languages/ pluginu. Plugin je plne preložiteľný pomocou štandardných WordPress i18n nástrojov (Loco Translate, Poedit a pod.).


Štruktúra tried pluginu

TriedaSúborÚloha
WCSP_WooCommerce_Slovenska_Postawoocommerce-slovenska-posta.phpBootstrap, licenčná brána, načítanie skriptov
WCSP_Admin_Settingsincludes/admin/class-admin-settings.phpRenderovanie a ukladanie stránky nastavení
WCSP_Shipping_Methodsincludes/class-shipping-methods.phpRegistrácia tried spôsobov dopravy
WCSP_Balik_Na_Postu_Shipping_Methodincludes/shipping-methods/balik-na-postu.phpVýpočet dopravy BNP
WCSP_BalikoBOX_Shipping_Methodincludes/shipping-methods/balikobox.phpVýpočet dopravy BBOX
WCSP_Checkoutincludes/class-checkout.phpVkladanie UI pokladne a validácia objednávky
WCSP_Blocks_Integrationincludes/class-blocks-integration.phpBootstrap integrácie WooCommerce Blocks
WCSP_Checkout_Block_Integrationincludes/class-blocks-checkout-integration.phpIntegrácia checkout bloku pre polia odberného miesta
WCSP_Pickup_Pointsincludes/class-pickup-points.phpDatabázové dotazy a prístup k dátam
WCSP_Ajax_Handlersincludes/class-ajax-handlers.phpWordPress AJAX action handlery
WCSP_Order_Displayincludes/class-order-display.phpZobrazenie odberného miesta v objednávkach a e-mailoch
WCSP_Trackingincludes/class-tracking.phpTracking metaboxy, synchronizácia a výstup pre zákazníka/e-maily
WCSP_Tracking_APIincludes/class-tracking-api.phpKlient tracking API a normalizácia udalostí
WCSP_EPH_Managerincludes/class-eph-manager.phpePH admin workflow, bulk akcie a vytváranie zásielok
WCSP_EPH_APIincludes/class-eph-api.phpNízkoúrovňový ePH REST klient
WCSP_EPH_Loggerincludes/class-eph-logger.phpTrvalé logovanie ePH požiadaviek
WCSP_Package_Validatorincludes/class-package-validator.phpLogika validácie rozmerov
WCSP_Box_Packerincludes/class-box-packer.phpAlgoritmus bin-packing
WCSP_Cronincludes/class-cron.phpSpráva plánovaných aktualizácií
WCSP_Licenseincludes/class-license-manager.phpValidácia a cachovanie licencie

Požiadavky na PHP

  • PHP 8.1+ – plugin používa jazykové vlastnosti PHP 8.1 vrátane enumov, readonly properties a typovaných argumentov.

Hooky a filtre

Akciové hooky

Výpočet dopravy

wcsp_before_calculate_shipping_bnp

Spustí sa pred výpočtom nákladov na dopravu Balíka na Poštu.

add_action( 'wcsp_before_calculate_shipping_bnp', function( $package ) {
    // $package = WooCommerce package array
} );

wcsp_before_calculate_shipping_bbox

Spustí sa pred výpočtom nákladov na dopravu BalikoBOX.

add_action( 'wcsp_before_calculate_shipping_bbox', function( $package ) {
    // $package = WooCommerce package array
} );

Validácia odberného miesta (klasická pokladňa)

wcsp_before_validate_pickup_point_selection

Spustí sa pred spustením serverovej validácie výberu odberného miesta počas klasickej pokladne.

add_action( 'wcsp_before_validate_pickup_point_selection', function( $chosen_service ) {
    // $chosen_service = string — 'BNP' or 'BBOX'
} );

wcsp_validate_pickup_point_selection

Spustí sa po úspešnom prejdení vstavanou validáciou odberného miesta. Použite na pridanie vlastnej validácie.

add_action( 'wcsp_validate_pickup_point_selection', function( $selected_pp, $chosen_service ) {
    // $selected_pp    = array — selected pickup point session data
    // $chosen_service = string — 'BNP' or 'BBOX'
    // Call wc_add_notice( 'message', 'error' ) to block the order
}, 10, 2 );

Validácia odberného miesta (Block Checkout)

wcsp_before_validate_pickup_point_block_checkout

Spustí sa pred spustením validácie počas odoslania objednávky cez WooCommerce Blocks checkout.

add_action( 'wcsp_before_validate_pickup_point_block_checkout', function( $order, $request, $chosen_service ) {
    // $order          = WC_Order
    // $request        = WP_REST_Request
    // $chosen_service = string — 'BNP' or 'BBOX'
}, 10, 3 );

wcsp_validate_pickup_point_block_checkout

Spustí sa po úspešnom prejdení vstavanou validáciou block checkoutu. Použite na pridanie vlastnej validácie.

add_action( 'wcsp_validate_pickup_point_block_checkout', function( $selected_pp, $order, $request ) {
    // $selected_pp = array — selected pickup point session data
    // $order       = WC_Order
    // $request     = WP_REST_Request
}, 10, 3 );

Spracovanie objednávky

wcsp_apply_pickup_point_to_order

Spustí sa po zapísaní dát odberného miesta do objednávky (meta uložené, adresa prepísaná ak je nakonfigurované).

add_action( 'wcsp_apply_pickup_point_to_order', function( $order, $selected_pp ) {
    // $order       = WC_Order
    // $selected_pp = array — pickup point session data
}, 10, 2 );

Zobrazenie objednávky

wcsp_before_pickup_point_email_display / wcsp_after_pickup_point_email_display

Spustia sa pred a po vykreslení sekcie odberného miesta v e-mailoch objednávok.

add_action( 'wcsp_before_pickup_point_email_display', function( $order, $pickup_point_id, $sent_to_admin, $plain_text ) {
    // $order           = WC_Order
    // $pickup_point_id = int
    // $sent_to_admin   = bool
    // $plain_text      = bool
}, 10, 4 );

wcsp_before_pickup_point_admin_display / wcsp_after_pickup_point_admin_display

Spustia sa pred a po vykreslení sekcie odberného miesta na stránke úpravy objednávky vo WP-Admin.

add_action( 'wcsp_before_pickup_point_admin_display', function( $order, $pickup_point_id ) {
    // $order           = WC_Order
    // $pickup_point_id = int
}, 10, 2 );

wcsp_before_pickup_point_order_details_display / wcsp_after_pickup_point_order_details_display

Spustia sa pred a po vykreslení sekcie odberného miesta na stránke Ďakujeme za objednávku a v zobrazení objednávky v Mojom účte.

add_action( 'wcsp_before_pickup_point_order_details_display', function( $order, $pickup_point_id ) {
    // $order           = WC_Order
    // $pickup_point_id = int
}, 10, 2 );

Import databázy

wcsp_before_import_from_xml / wcsp_after_import_from_xml

Spustia sa pred a po spustení importu XML odberných miest.

add_action( 'wcsp_before_import_from_xml', function( $local_file ) {
    // $local_file = string — absolute path to the XML file being imported
} );

add_action( 'wcsp_after_import_from_xml', function( $local_file, $parsed_data ) {
    // $local_file  = string — absolute path to the XML file
    // $parsed_data = array — all parsed pickup point rows
}, 10, 2 );

AJAX

wcsp_before_save_selected_pickup_point

Spustí sa pred uložením výberu odberného miesta do session WooCommerce.

add_action( 'wcsp_before_save_selected_pickup_point', function( $pp_id, $pp_details ) {
    // $pp_id     = int   — pickup point database ID
    // $pp_details = object — full pickup point record from the database
}, 10, 2 );

wcsp_before_save_widget_pickup_point

Spustí sa pred uložením odberného miesta vybraného cez frontend widget do session WooCommerce.

add_action( 'wcsp_before_save_widget_pickup_point', function( $widget_id, $label, $chosen_service ) {
    // $widget_id      = string
    // $label          = string — názov widgetu zobrazený zákazníkovi
    // $chosen_service = string — 'BNP' alebo 'BBOX'
}, 10, 3 );

ePH Admin UI

wcsp_before_eph_metabox_fields / wcsp_after_eph_metabox_fields

Spustia sa pred a po vykreslení polí ePodací Hárok v metaboxe objednávky.

wcsp_before_eph_metabox_fields dostáva $order, $eph_values a $pickup_point.

wcsp_after_eph_metabox_fields dostáva tie isté hodnoty a navyše pole $state s kľúčmi sheet_id, parcel_id, parcel_number, label_url, registered a is_configured.

add_action( 'wcsp_after_eph_metabox_fields', function( $order, $eph_values, $pickup_point, $state ) {
    // $order        = WC_Order
    // $eph_values   = array — aktuálne ePH hodnoty objednávky
    // $pickup_point = array — sumár odberného miesta alebo prázdne pole
    // $state        = array — aktuálny stav zásielky
}, 10, 4 );

wcsp_eph_admin_assets_enqueued

Spustí sa po načítaní ePH admin assetov a lokalizovaných dát pre JavaScript.

add_action( 'wcsp_eph_admin_assets_enqueued', function( $hook, $script_data ) {
    // $hook        = string — hook aktuálnej WP-Admin obrazovky
    // $script_data = array  — lokalizované dáta pre wcsp-eph-admin.js
}, 10, 2 );

wcsp_before_save_eph_order_values / wcsp_after_save_eph_order_values

Spustia sa pred a po uložení ePH hodnôt objednávky z admin metaboxu.

add_action( 'wcsp_before_save_eph_order_values', function( $order, $values, $data, $defaults ) {
    // $order    = WC_Order
    // $values   = array — sanitizované hodnoty pripravené na uloženie
    // $data     = array — raw request dáta
    // $defaults = array — predvolené hodnoty objednávky
}, 10, 4 );

Životný cyklus ePH zásielky

wcsp_eph_before_create_shipment / wcsp_eph_after_create_shipment

Spustia sa bezprostredne pred vytvorením ePH zásielky a po vytvorení hárku a balíka.

add_action( 'wcsp_eph_after_create_shipment', function( $order, $sheet_id, $parcel_id, $parcel_number, $parcel_data, $sheet_result, $parcel_result ) {
    // $order         = WC_Order
    // $sheet_id      = string
    // $parcel_id     = string
    // $parcel_number = string
    // $parcel_data   = array — payload odoslaný na add parcel endpoint
}, 10, 7 );

wcsp_eph_before_finalize_shipment / wcsp_eph_after_finalize_shipment

Spustia sa pred registráciou zásielky a po dokončení celého finalize workflow.

add_action( 'wcsp_eph_after_finalize_shipment', function( $order, $result, $args ) {
    // $order  = WC_Order
    // $result = array — výsledok z finalize_order_shipment()
    // $args   = array — normalizované finalize argumenty
}, 10, 3 );

wcsp_eph_after_register_sheet

Spustí sa po úspešnej registrácii hárku cez ePH API.

add_action( 'wcsp_eph_after_register_sheet', function( $order, $sheet_id, $register_result, $args ) {
    // $order           = WC_Order
    // $sheet_id        = string
    // $register_result = array — dekódovaná odpoveď ePH API
    // $args            = array — finalize argumenty
}, 10, 4 );

wcsp_eph_tracking_number_synced

Spustí sa po skopírovaní novo vytvoreného čísla zásielky ePH do tracking meta polí objednávky.

add_action( 'wcsp_eph_tracking_number_synced', function( $order, $parcel_number, $old_tracking ) {
    // $order         = WC_Order
    // $parcel_number = string
    // $old_tracking  = string — predchádzajúce tracking číslo, ak existovalo
}, 10, 3 );

wcsp_eph_before_label_download / wcsp_eph_after_store_label

Spustia sa pred stiahnutím vygenerovaného PDF štítku a po jeho lokálnom uložení.

add_action( 'wcsp_eph_after_store_label', function( $order, $local_url, $remote_url, $filepath, $data ) {
    // $order      = WC_Order
    // $local_url  = string — verejná uploads URL uloženého štítku
    // $remote_url = string — vzdialená URL štítku z API
    // $filepath   = string — absolútna lokálna cesta k súboru
    // $data       = array  — dekódované dáta odpovede so štítkom
}, 10, 5 );

Hromadné ePH spracovanie

wcsp_before_apply_bulk_eph_values / wcsp_after_apply_bulk_eph_values

Spustia sa pred a po aplikovaní spoločných hodnôt z bulk dialógu na konkrétnu objednávku.

add_action( 'wcsp_after_apply_bulk_eph_values', function( $order, $bulk_values, $data, $values ) {
    // $order       = WC_Order
    // $bulk_values = array — normalizované hodnoty z bulk dialógu
    // $data        = array — raw request dáta
    // $values      = array — existujúce ePH hodnoty objednávky
}, 10, 4 );

wcsp_eph_before_bulk_finalize_order / wcsp_eph_bulk_finalize_order_error / wcsp_eph_after_bulk_finalize_order

Spustia sa okolo hromadného workflow „Generate ePH Labels“ pre každú objednávku.

add_action( 'wcsp_eph_bulk_finalize_order_error', function( $order, $result, $bulk_data, $existing_mode, $has_existing_eph ) {
    // $order            = WC_Order
    // $result           = WP_Error
    // $bulk_data        = array
    // $existing_mode    = string — 'skip' alebo 'recreate'
    // $has_existing_eph = bool
}, 10, 5 );

wcsp_before_clear_eph_state / wcsp_after_clear_eph_state

Spustia sa pred a po vymazaní uloženého ePH stavu z objednávky.

add_action( 'wcsp_before_clear_eph_state', function( $order ) {
    // $order = WC_Order
} );

ePH API požiadavky

wcsp_eph_before_api_request

Spustí sa bezprostredne pred odoslaním autentifikovanej požiadavky nízkoúrovňovým ePH REST klientom.

add_action( 'wcsp_eph_before_api_request', function( $method, $path, $body, $context, $url, $args ) {
    // $method  = string — GET, PUT, POST, DELETE
    // $path    = string — API cesta, napríklad /sheets
    // $body    = array
    // $context = array — kontext volania, typicky order_id a action
    // $url     = string — plná request URL
    // $args    = array  — argumenty pre wp_remote_request()
}, 10, 6 );

wcsp_eph_api_request_failed

Spustí sa, keď wp_remote_request() zlyhá ešte pred tým, než ePH API vráti HTTP odpoveď.

add_action( 'wcsp_eph_api_request_failed', function( $response, $method, $path, $body, $context, $url, $args, $log_base ) {
    // $response = WP_Error
    // $log_base = array — normalizovaný log payload pripravený klientom
}, 10, 8 );

wcsp_eph_after_api_request

Spustí sa po úspešnom dekódovaní a normalizácii odpovede ePH API.

add_action( 'wcsp_eph_after_api_request', function( $decoded, $method, $path, $body, $context, $url, $args, $http_code, $raw_body, $duration_ms ) {
    // $decoded     = array — dekódovaná odpoveď API
    // $http_code   = int
    // $raw_body    = string
    // $duration_ms = int
}, 10, 10 );

Filtrovacie hooky

Náklady na dopravu

wcsp_shipping_cost_bnp / wcsp_shipping_cost_bbox

Upravte výsledné vypočítané náklady na dopravu pred pridaním sadzby do WooCommerce.

add_filter( 'wcsp_shipping_cost_bnp', function( $cost, $package ) {
    // $cost    = float — calculated shipping cost
    // $package = array — WooCommerce package
    return $cost;
}, 10, 2 );

wcsp_shipping_rate_bnp / wcsp_shipping_rate_bbox

Upravte celé pole sadzby pred jej registráciou vo WooCommerce.

add_filter( 'wcsp_shipping_rate_bnp', function( $rate, $package ) {
    // $rate = array — with keys: id, label, cost, taxes, meta_data, etc.
    return $rate;
}, 10, 2 );

Výpočet hmotnosti

wcsp_item_weight_for_cost

Upravte hmotnosť jednotlivej položky v košíku pred jej pripočítaním k celkovej hmotnosti pre výpočet nákladov.

add_filter( 'wcsp_item_weight_for_cost', function( $weight, $product, $item, $package ) {
    // $weight  = float      — raw product weight (before quantity multiplication)
    // $product = WC_Product
    // $item    = array      — WooCommerce cart item
    // $package = array      — WooCommerce package
    return $weight;
}, 10, 4 );

wcsp_total_weight_for_cost_bnp / wcsp_total_weight_for_cost_bbox

Upravte celkovú hmotnosť košíka použitú vo výpočte nákladov na dopravu, po sčítaní všetkých položiek a hmotnosti balenia inštancie.

add_filter( 'wcsp_total_weight_for_cost_bnp', function( $total_weight, $cart_weight, $packing_weight, $package ) {
    // $total_weight   = float — cart_weight + packing_weight
    // $cart_weight    = float — sum of all item weights
    // $packing_weight = float — instance-level packing material weight
    // $package        = array — WooCommerce package
    return $total_weight;
}, 10, 4 );

Validácia rozmerov

wcsp_bnp_valid_dimensions / wcsp_bbox_valid_dimensions

Prepíšte výsledok validácie rozmerov produktu.

add_filter( 'wcsp_bnp_valid_dimensions', function( $is_valid, $product, $validation, $package ) {
    // $is_valid   = bool       — current validation result
    // $product    = WC_Product
    // $validation = array      — full validation result array
    // $package    = array      — WooCommerce package
    return $is_valid;
}, 10, 4 );

wcsp_bnp_box_packing_result / wcsp_bbox_box_packing_result

Prepíšte výsledok kontroly bin-packing.

add_filter( 'wcsp_bnp_box_packing_result', function( $fits, $pack_result, $package ) {
    // $fits        = bool  — whether items fit in the box
    // $pack_result = array — full packing result from WCSP_Box_Packer
    // $package     = array — WooCommerce package
    return $fits;
}, 10, 3 );

Filtre AJAX odpovedí

wcsp_ajax_pickup_point_details

Upravte pole podrobností odberného miesta vrátené AJAX akciou wcsp_pp_get_pp_details.

add_filter( 'wcsp_ajax_pickup_point_details', function( $response, $pp_id ) {
    // $response = array — full details array (id, name, address, opening_hours, etc.)
    // $pp_id    = int
    return $response;
}, 10, 2 );

wcsp_ajax_search_pickup_points

Upravte pole výsledkov vyhľadávania vrátené AJAX akciou wcsp_pp_search_pp.

add_filter( 'wcsp_ajax_search_pickup_points', function( $results, $search ) {
    // $results = array  — array of pickup point result arrays
    // $search  = string — the search term used
    return $results;
}, 10, 2 );

wcsp_ajax_closeby_pickup_points

Upravte pole blízkych výsledkov vrátené AJAX akciou wcsp_pp_get_closeby_pp.

add_filter( 'wcsp_ajax_closeby_pickup_points', function( $results, $lat, $lng ) {
    // $results = array — array of nearby pickup point result arrays (with distance field)
    // $lat     = float
    // $lng     = float
    return $results;
}, 10, 3 );

wcsp_selected_pickup_point_session_data

Upravte dáta uložené v session WooCommerce pri potvrdení výberu odberného miesta.

add_filter( 'wcsp_selected_pickup_point_session_data', function( $session_data ) {
    // $session_data = array — data to be stored in WC session
    return $session_data;
} );

wcsp_selected_widget_pickup_point_session_data

Upravte dáta uložené v session WooCommerce pri potvrdení odberného miesta vybraného cez widget.

add_filter( 'wcsp_selected_widget_pickup_point_session_data', function( $session_data ) {
    // $session_data = array - dáta ukladané do session WC
    return $session_data;
} );

Prepísanie doručovacej adresy

wcsp_should_override_shipping_address / wcsp_replace_shipping_address_on_order

Ovládajte, či sa má doručovacia adresa objednávky prepísať adresou vybraného odberného miesta.

add_filter( 'wcsp_should_override_shipping_address', function( $should_override, $order, $data ) {
    // $should_override = bool
    // $order           = WC_Order
    // $data            = array - checkout order data
    return $should_override;
}, 10, 3 );

Prístup k dátam odberných miest

wcsp_all_map_markers / wcsp_pickup_points_search_results / wcsp_pickup_points_closeby_results

Upravte surové datasety odberných miest vracané internou dátovou vrstvou pre mapové markery, vyhľadávanie a blízke výsledky.

add_filter( 'wcsp_pickup_points_search_results', function( $results, $search, $service_code, $exclude_bbox ) {
    // $results      = array
    // $search       = string
    // $service_code = string
    // $exclude_bbox = bool
    return $results;
}, 10, 4 );

wcsp_pickup_point_details / wcsp_can_accept_weight / wcsp_parsed_posta_row

Prispôsobte detail jedného odberného miesta, kontrolu prijatia hmotnosti a normalizované XML riadky importu ešte pred interným použitím.

add_filter( 'wcsp_parsed_posta_row', function( $row, $posta ) {
    // $row   = array - normalizovaný riadok pripravený na uloženie
    // $posta = array|SimpleXMLElement - surový zdrojový uzol bodu
    return $row;
}, 10, 2 );

Box packing a validácia balíka

wcsp_box_packer_items / wcsp_bnp_box_dimensions

Prispôsobte normalizovaný zoznam položiek pre interný box-packing algoritmus a virtuálne rozmery boxu Balíka na poštu použité pri tejto validácii.

add_filter( 'wcsp_box_packer_items', function( $items, $service ) {
    // $items   = array - normalizované položky pre box packer
    // $service = string - 'balikobox' alebo 'bnp'
    return $items;
}, 10, 2 );

wcsp_meets_minimum_face / wcsp_within_max_balik / wcsp_within_max_expres / wcsp_within_max_lp

Prepíšte nízkoúrovňové kontroly rozmerových pravidiel používané v WCSP_Package_Validator.

add_filter( 'wcsp_within_max_lp', function( $within_limit, $length_plus_perimeter ) {
    // $within_limit          = bool
    // $length_plus_perimeter = float
    return $within_limit;
}, 10, 2 );

wcsp_is_skladne / wcsp_is_neskladne / wcsp_product_dimensions / wcsp_validate_product_dimensions_result

Prepíšte klasifikáciu balíka, normalizované rozmery produktu a finálny validačný výsledok vracaný z WCSP_Package_Validator.

add_filter( 'wcsp_validate_product_dimensions_result', function( $result, $length, $width, $height, $is_irregular ) {
    // $result       = array - kompletný validačný výsledok
    // $length       = float
    // $width        = float
    // $height       = float
    // $is_irregular = bool
    return $result;
}, 10, 5 );

Predvolené hodnoty nastavení

wcsp_bbox_default_length / wcsp_bbox_default_width / wcsp_bbox_default_height

Prepíšte predvolené maximálne rozmery BalikoBOX zobrazené v nastaveniach pluginu ešte pred uložením vlastných hodnôt obchodníkom.

add_filter( 'wcsp_bbox_default_length', function( $default_length ) {
    // $default_length = int|float
    return $default_length;
} );

Konfigurácia ePH

wcsp_eph_allowed_parcel_categories / wcsp_eph_parcel_category_labels / wcsp_eph_allowed_payment_types / wcsp_eph_payment_type_labels / wcsp_eph_allowed_parcel_classes / wcsp_eph_parcel_class_labels / wcsp_eph_allowed_service_codes / wcsp_eph_service_labels

Ovládajte, ktoré ePH kategórie zásielok, typy platieb, triedy zásielok a doplnkové služby sú dostupné v admin rozhraní a ako sa zobrazujú.

add_filter( 'wcsp_eph_service_labels', function( $labels ) {
    // $labels = array - kód služby => popis
    return $labels;
} );

wcsp_eph_is_configured / wcsp_eph_admin_script_data / wcsp_eph_bulk_actions

Prepíšte kontrolu pripravenosti ePH, lokalizované dáta pre admin JavaScript a registrované WooCommerce bulk akcie.

add_filter( 'wcsp_eph_admin_script_data', function( $script_data, $hook ) {
    // $script_data = array
    // $hook        = string - hook aktuálnej WP-Admin obrazovky
    return $script_data;
}, 10, 2 );

Dáta objednávky a zásielky ePH

wcsp_eph_order_weight / wcsp_eph_detect_cod / wcsp_eph_order_defaults / wcsp_eph_order_values / wcsp_eph_sanitized_order_values

Ovládajte výpočet predvolených ePH hodnôt objednávky, detekciu dobierky a normalizáciu hodnôt z metaboxu pred uložením.

add_filter( 'wcsp_eph_sanitized_order_values', function( $values, $order, $data, $defaults ) {
    // $values   = array - sanitizované hodnoty pripravené na uloženie
    // $order    = WC_Order
    // $data     = array - raw request dáta
    // $defaults = array
    return $values;
}, 10, 4 );

wcsp_eph_metabox_html / wcsp_eph_order_list_summary_data / wcsp_eph_bulk_dialog_defaults / wcsp_eph_bulk_order_values / wcsp_eph_bulk_results

Prispôsobte vykreslené HTML metaboxu, sumárne dáta v zozname objednávok, predvolené hodnoty bulk dialógu, hodnoty aplikované na objednávku a agregované bulk výsledky.

add_filter( 'wcsp_eph_bulk_results', function( $results, $order_ids, $bulk_data, $existing_mode ) {
    // $results       = array
    // $order_ids     = int[]
    // $bulk_data     = array
    // $existing_mode = string - 'skip' alebo 'recreate'
    return $results;
}, 10, 4 );

wcsp_eph_sender_data / wcsp_eph_recipient_data / wcsp_eph_reception_method / wcsp_eph_parcel_data / wcsp_eph_finalize_shipment_args / wcsp_eph_finalize_shipment_result / wcsp_eph_services_before_enforcement / wcsp_eph_services

Upravte odosielateľa, príjemcu, kódy služieb a finálne request payloady používané pri vytváraní a registrácii zásielky.

add_filter( 'wcsp_eph_parcel_data', function( $parcel_data, $order, $values, $sheet_id, $sender ) {
    // $parcel_data = array
    // $order       = WC_Order
    // $values      = array
    // $sheet_id    = string
    // $sender      = array
    return $parcel_data;
}, 10, 5 );

Štítky a API filtre ePH

wcsp_eph_label_remote_url / wcsp_eph_label_download_args / wcsp_eph_label_subdir / wcsp_eph_label_filename

Upravte vzdialenú URL PDF štítku, argumenty sťahovania a lokálnu cestu a názov súboru pri ukladaní štítkov.

add_filter( 'wcsp_eph_label_filename', function( $filename, $order, $data, $parcel_number ) {
    // $filename      = string
    // $order         = WC_Order
    // $data          = array
    // $parcel_number = string
    return $filename;
}, 10, 4 );

wcsp_eph_api_base_url / wcsp_eph_api_request_url / wcsp_eph_api_request_args / wcsp_eph_api_invalid_response_message / wcsp_eph_api_error_message / wcsp_eph_api_response_data / wcsp_eph_api_validation_reason_labels

Upravte nízkoúrovňové URL ePH API požiadaviek, argumenty requestov, chybové hlášky, dekódované odpovede a popisy validačných reason kódov.

add_filter( 'wcsp_eph_api_response_data', function( $decoded, $method, $path, $body, $context, $http_code, $raw_body ) {
    // $decoded   = array
    // $method    = string
    // $path      = string
    // $body      = array
    // $context   = array
    // $http_code = int
    // $raw_body  = string
    return $decoded;
}, 10, 7 );

Sledovanie

Akciové hooky sledovania

wcsp_tracking_synced

Spustí sa po úspešnej synchronizácii na pozadí pre objednávku.

add_action( 'wcsp_tracking_synced', function( $order, $events ) {
    // $order  = WC_Order
    // $events = array — normalized events array (newest first)
}, 10, 2 );

wcsp_before_tracking_email / wcsp_after_tracking_email

Spustia sa pred a po vykreslení sekcie sledovania v e-maile objednávky.

add_action( 'wcsp_before_tracking_email', function( $order, $tracking_number, $plain_text ) {
    // $order           = WC_Order
    // $tracking_number = string
    // $plain_text      = bool
}, 10, 3 );

Filtrovacie hooky sledovania

wcsp_tracking_api_endpoint

Prepíšte URL endpointu API použitého na načítanie udalostí sledovania.

add_filter( 'wcsp_tracking_api_endpoint', function( $url ) {
    // $url = string — default: https://api.posta.sk/tracking?q=...&l=...&p=1
    return $url;
} );

wcsp_tracking_status_map

Prispôsobte mapovanie surových kódov stavu API Slovenskej pošty na generické kategórie.

add_filter( 'wcsp_tracking_status_map', function( $map ) {
    // $map = array — status_code => category string
    // Built-in categories: registered, accepted, in_transit, out_for_delivery,
    //                      stored_at_post, delivered, failed, returned
    $map['MY_CUSTOM_CODE'] = 'in_transit';
    return $map;
} );

wcsp_tracking_category_labels

Prispôsobte zobrazovacie popisky pre každú kategóriu sledovania.

add_filter( 'wcsp_tracking_category_labels', function( $labels ) {
    // $labels = array — category => translated label string
    $labels['stored_at_post'] = 'Ready at your post office';
    return $labels;
} );

wcsp_tracking_normalized_events

Filtrujte pole analyzovaných udalostí po normalizácii zo surowej odpovede API, pred uložením do cache v objednávke.

add_filter( 'wcsp_tracking_normalized_events', function( $events, $raw ) {
    // $events = array — normalized events (newest first)
    // $raw    = array — raw decoded API response
    return $events;
}, 10, 2 );

wcsp_tracking_progress_steps

Prispôsobte kroky zobrazené v 5-krokovom ukazovateli postupu na stránkach objednávok pre zákazníka.

add_filter( 'wcsp_tracking_progress_steps', function( $steps, $events, $order ) {
    // $steps  = array — ordered steps, each: ['id', 'label', 'active', 'date']
    // $events = array — cached events
    // $order  = WC_Order
    return $steps;
}, 10, 3 );

wcsp_tracking_email_ids

Ovládajte, ktoré ID e-mailov WooCommerce dostanú sekciu sledovania.

add_filter( 'wcsp_tracking_email_ids', function( $ids ) {
    // Default: ['customer_processing_order', 'customer_completed_order', 'customer_on_hold_order']
    $ids[] = 'customer_invoice';
    return $ids;
} );

Referencia šablón

Plugin poskytuje dve PHP šablóny, ktoré je možné prepísať vo vašej téme. Prepísanie šablón sa riadi rovnakou konvenciou ako šablóny WooCommerce: skopírujte súbor do adresára vašej témy a upravte ho tam.


Cesta k prepisu šablóny

Skopírujte šablóny do adresára vašej témy pomocou tejto štruktúry:

your-theme/
└── woocommerce-slovenska-posta/
    ├── checkout-pickup-point-select.php
    └── checkout-pickup-point-select-dialog.php

Plugin kontroluje prepisy témy pomocou locate_template() pred načítaním z vlastného adresára templates/.


Šablóny

checkout-pickup-point-select.php

Cesta v plugine: templates/checkout-pickup-point-select.php Cesta k prepisu v téme: your-theme/woocommerce-slovenska-posta/checkout-pickup-point-select.php

Účel: Vykresľuje inline výber odberného miesta zobrazený pod spôsobom dopravy v pokladni. V predvolenej implementácii obsahuje tlačidlo „Vybrať odberné miesto" / „Zmeniť" a zobrazenie názvu aktuálne vybraného odberného miesta.

Dostupné premenné:

PremennáTypPopis
$selected_pickup_pointarraynullAktuálne vybrané odberné miesto z WC session, alebo null ak nie je žiadne vybrané
$shipping_methodWC_Shipping_RateObjekt aktuálnej sadzby dopravy

Predvolený výstup:

<div class="wcsp-pickup-point-selector">
    <button id="wcsp-pp-toggle" type="button" class="button">
        Select Pickup Point
    </button>
</div>

Po výbere odberného miesta sa text tlačidla zmení na názov odberného miesta s odkazom „Zmeniť".


checkout-pickup-point-select-dialog.php

Cesta v plugine: templates/checkout-pickup-point-select-dialog.php Cesta k prepisu v téme: your-theme/woocommerce-slovenska-posta/checkout-pickup-point-select-dialog.php

Účel: Vykresľuje HTML štruktúru modálneho dialógu výberu odberného miesta. JavaScript inicializuje mapu, vyhľadávanie a interakciu v rámci tejto HTML štruktúry.

Dôležité: ID elementov a názvy tried v tejto šablóne sú referencované JavaScriptom. Ak ich vo svojom prepise premenujete, musíte tiež aktualizovať assets/js/wcsp-pp-checkout.js.

Kľúčové ID elementov používané JavaScriptom:

ID elementuÚčel
#wcsp-pp-dialogKoreňový kontajner dialógu (cieľ jQuery UI Dialog)
#wcsp-pp-searchTextové pole vyhľadávania
#wcsp-pp-search-btnTlačidlo vyhľadávania
#wcsp-pp-geolocation-btnTlačidlo geolokácie „Moja poloha"
#wcsp-pp-resultsKontajner zoznamu výsledkov
#wcsp-pp-mapKontajner mapy OpenLayers
#wcsp-pp-detailsPanel podrobností vybraného odberného miesta
#wcsp-pp-confirm-btnTlačidlo potvrdenia výberu
#wcsp-pp-dialog-closeTlačidlo zatvorenia dialógu

Predvolená štruktúra:

<div id="wcsp-pp-dialog" style="display:none;">
    <div class="wcsp-dialog-header">
        <button id="wcsp-pp-dialog-close">×</button>
    </div>
    <div class="wcsp-dialog-body">
        <div class="wcsp-dialog-left">
            <div class="wcsp-search-bar">
                <input id="wcsp-pp-search" type="text" placeholder="Search..." />
                <button id="wcsp-pp-search-btn">Search</button>
                <button id="wcsp-pp-geolocation-btn">My Location</button>
            </div>
            <div id="wcsp-pp-results"></div>
        </div>
        <div class="wcsp-dialog-right">
            <div id="wcsp-pp-map"></div>
            <div id="wcsp-pp-details"></div>
        </div>
    </div>
</div>

Štýly

Frontendové štýly pluginu sú načítané zo súboru assets/css/wcsp-pp-checkout.css. Tento súbor je zaradený do frontu na stránkach pokladne a nemôže byť prepísaný cez systém šablón. Na prispôsobenie štýlov:

  1. Pridajte CSS pravidlá do vašej témy, ktoré prepíšu triedy pluginu.
  2. V prípade potreby použite špecificitu alebo !important na prepísanie predvolených nastavení pluginu.

Kľúčové CSS triedy:

TriedaÚčel
.wcsp-pickup-point-selectorObal okolo inline tlačidla výberu
.wcsp-dialog-leftĽavý panel dialógu (vyhľadávanie + výsledky)
.wcsp-dialog-rightPravý panel (mapa + podrobnosti)
.wcsp-result-itemJednotlivý výsledok v zozname vyhľadávania
.wcsp-result-item.selectedAktuálne vybraný výsledok
.wcsp-weight-warningVarovný odznak o hmotnosti pri výsledku
.wcsp-result-item.weight-exceededZosivená položka pri prekročení hmotnostného limitu
.wcsp-shipping-fields-hiddenPoužité na skrytie polí doručovacej adresy