Přeskočit na obsah

Pro vývojáře

[wpify_woo_withdrawal_form]

Vyrenderuje formulář pro odstoupení. Vrátí prázdný řetězec (žádný výstup), pokud Stránka pro odstoupení není přiřazena v nastavení modulu.

V Gutenberg/block editoru se zobrazí admin-only placeholder, když je polovina vypnutá — víš že blok existuje, ale na frontendu nic nevyrenderuje.

[wpify_woo_claim_form]

Renderuje reklamační (záruční) formulář. Stejné chování při vypnutí jako formulář pro odstoupení.

Oba shortcody/bloky lze umístit na jednu stránku. URL parametr ?form=withdrawal nebo ?form=claim říká, který formulář se má předvyplnit. HTML kotvy #wpify-woo-withdrawal-form a #wpify-woo-claim-form umožňují přímé odkazy.

Příklad odkazu:

/vraceni-zbozi/?order_key=wc_order_abc123&form=withdrawal#wpify-woo-withdrawal-form
BlokEkvivalent shortcode
wpify-woo/withdrawal-form[wpify_woo_withdrawal_form]
wpify-woo/claim-form[wpify_woo_claim_form]

Oba bloky podporují align, className a používají ServerSideRender pro live náhled v editoru.

ParametrÚčelAuth model
?order_key={wc_order_key}Důvěryhodný token z WC (používá se v plugin-generovaných odkazech v e-mailech) — plný pre-fill, žádný email match nutnýVlastnictví kryptografického klíče = autorizace
?order={number_or_id}Hint identifikátoru (manuální zadání, footer link) — prázdný formulář, 2-faktor (číslo objednávky + shoda billing emailu) povinnýTwo-factor verifikace
?form=withdrawal|claimVybírá který formulář se na sdílené stránce předvyplní/aktivuje
?submitted=1Spustí thank-you stav (plugin nastavuje po úspěšném podání)
?wcr_err={message}Chybová zpráva ve formuláři (jen no-JS PRG fallback)

wpify_woo_withdrawal_claims_blocked_statuses

Section titled “wpify_woo_withdrawal_claims_blocked_statuses”

Definuje stavy objednávek, kde jsou nové žádosti blokovány.

apply_filters( 'wpify_woo_withdrawal_claims_blocked_statuses', array $statuses, WC_Order $order );
array( 'refunded', 'cancelled', 'failed', 'checkout-draft', 'auto-draft' )

Příklad: blokovat i „on-hold” objednávky

Section titled “Příklad: blokovat i „on-hold” objednávky”
add_filter( 'wpify_woo_withdrawal_claims_blocked_statuses', function( $statuses ) {
$statuses[] = 'on-hold';
return $statuses;
} );

Fallback resolver pro custom order_number formáty. Volá se až poté, co selže default číselné ID lookup A vestavěné WooCommerce vyhledávání objednávek.

apply_filters( 'wpify_woo_withdrawal_claims_resolve_order', ?WC_Order $order, string $identifier );
add_filter( 'wpify_woo_withdrawal_claims_resolve_order', function( $order, $identifier ) {
if ( strpos( $identifier, 'ORD-' ) === 0 ) {
$id = (int) substr( $identifier, 4 );
return wc_get_order( $id );
}
return $order;
}, 10, 2 );

wpify_woo_withdrawal_claims_eligible_items

Section titled “wpify_woo_withdrawal_claims_eligible_items”

Modifikuje seznam položek zobrazených ve formuláři per typ.

apply_filters( 'wpify_woo_withdrawal_claims_eligible_items', array $result, WC_Order $order, string $type );

$result má klíče: items (pole řádků), eligible_count, ineligible_count.


wpify_woo_withdrawal_claims_is_eligible_item

Section titled “wpify_woo_withdrawal_claims_is_eligible_item”

Per-item override eligibility.

apply_filters( 'wpify_woo_withdrawal_claims_is_eligible_item', array $result, WC_Order_Item $item, WC_Order $order, string $type );

$result má klíče: eligible (bool), reason (string), line_item_id (int).


wpify_woo_withdrawal_claims_period_end / period_start

Section titled “wpify_woo_withdrawal_claims_period_end / period_start”

Override vypočtených datumů konce/startu lhůty.

apply_filters( 'wpify_woo_withdrawal_claims_period_end', DateTimeInterface $end, WC_Order $order, string $type );
apply_filters( 'wpify_woo_withdrawal_claims_period_start', DateTimeInterface $start, WC_Order $order, string $type );

wpify_woo_withdrawal_claims_is_excluded_product

Section titled “wpify_woo_withdrawal_claims_is_excluded_product”

Per-produkt exclusion override (default čte _wpify_woo_withdrawal_excluded / _wpify_woo_warranty_excluded meta).

apply_filters( 'wpify_woo_withdrawal_claims_is_excluded_product', bool $excluded, WC_Product $product, string $type );

wpify_woo_withdrawal_claims_request_type_labels

Section titled “wpify_woo_withdrawal_claims_request_type_labels”

Lidsky čitelné popisky typů žádostí. Umožňuje doplnit další typy nebo přepsat výchozí.

apply_filters( 'wpify_woo_withdrawal_claims_request_type_labels', array $labels );

Výchozí: withdrawal → „Odstoupení”, claim → „Reklamace”.


Lidsky čitelné popisky rozsahů žádosti.

apply_filters( 'wpify_woo_withdrawal_claims_scope_labels', array $labels );

Výchozí: whole_order → „Celá objednávka”, specific_items → „Konkrétní položky”.


Lidsky čitelné popisky stavů žádosti. Použijte k registraci vlastních stavů (z vlastní integrace), aby se správně zobrazily v emailech i v adminu.

apply_filters( 'wpify_woo_withdrawal_claims_status_labels', array $labels );

Výchozí: submitted → „Odesláno”.

add_filter( 'wpify_woo_withdrawal_claims_status_labels', function( $labels ) {
$labels['in_progress'] = __( 'Zpracovává se', 'my-plugin' );
$labels['resolved'] = __( 'Vyřízeno', 'my-plugin' );
return $labels;
} );

Modifikace dat žádosti těsně před uložením (vč. status, custom meta).

apply_filters( 'wpify_woo_withdrawal_claims_request_data', array $data, string $type );
add_filter( 'wpify_woo_withdrawal_claims_request_data', function( $data, $type ) {
$data['status'] = 'pending_review';
return $data;
}, 10, 2 );

wpify_woo_withdrawal_claims_email_recipient

Section titled “wpify_woo_withdrawal_claims_email_recipient”

Override příjemce e-mailu žádosti.

apply_filters( 'wpify_woo_withdrawal_claims_email_recipient', string $email, int $request_id, string $context );

$context je 'customer' nebo 'admin'.


Section titled “wpify_woo_withdrawal_claims_inject_link_emails”

Override seznamu WC e-mailů, do kterých se vkládá odkaz na odstoupení.

apply_filters( 'wpify_woo_withdrawal_claims_inject_link_emails', array $email_ids );

wpify_woo_withdrawal_claims_my_account_button_args

Section titled “wpify_woo_withdrawal_claims_my_account_button_args”

Modifikace tlačítka v Můj účet → detail objednávky (text, URL, atributy).

apply_filters( 'wpify_woo_withdrawal_claims_my_account_button_args', array $args, WC_Order $order, string $type );

Přidává vlastní pole do formuláře žádosti (např. IBAN, telefon, vlastní souhlas). Definované pole se automaticky vykreslí ve formuláři, validuje, uloží do databáze a zobrazí na všech místech, kde plugin žádost ukazuje — v adminu, v zákaznickém přehledu „Moje objednávky” i v e-mailech (HTML i plain).

apply_filters( 'wpify_woo_withdrawal_claims_form_fields', array $fields, string $type );

Každé pole je asociativní pole s následujícími klíči:

KlíčTypPovinnéPopis
idstringanoUnikátní identifikátor (použije se jako name HTML inputu i jako klíč v uložených datech)
labelstringanoPopisek pole — zobrazí se ve formuláři, v adminu i v e-mailech
typestringnetext (výchozí), email, tel, textarea, select, checkbox
placeholderstringneHTML placeholder pro inputy
requiredboolnetrue = vyžadováno pro odeslání (s validační hláškou)
optionsarrayjen pro selectPole ['value' => ..., 'label' => ...]
sanitizecallableneVlastní sanitizace; jinak se použije výchozí podle type
validatecallableneVlastní validace; vrátí WP_Error nebo true

Příklad: přidat IBAN k formuláři pro odstoupení

Section titled “Příklad: přidat IBAN k formuláři pro odstoupení”
add_filter( 'wpify_woo_withdrawal_claims_form_fields', function ( array $fields, string $type ) {
if ( $type !== 'withdrawal' ) {
return $fields;
}
$fields[] = array(
'id' => 'iban',
'type' => 'text',
'label' => __( 'IBAN pro vrácení peněz', 'my-textdomain' ),
'placeholder' => 'SK00 0000 0000 0000 0000 0000',
'required' => true,
);
return $fields;
}, 10, 2 );

Tím se IBAN objeví ve formuláři, vyžádá se před odesláním, uloží se k žádosti a zobrazí se v adminu, v zákaznické historii „Moje objednávky” i v admin/customer e-mailech — bez dalšího kódu.

wpify_woo_withdrawal_claims_request_created

Section titled “wpify_woo_withdrawal_claims_request_created”

Spouští se po úspěšném uložení žádosti. Primární extension point pro custom workflowy.

do_action( 'wpify_woo_withdrawal_claims_request_created', int $request_id, int $order_id, string $type );

Příklad: notifikovat Slack po každé žádosti

Section titled “Příklad: notifikovat Slack po každé žádosti”
add_action( 'wpify_woo_withdrawal_claims_request_created', function( $request_id, $order_id, $type ) {
wp_remote_post( 'https://hooks.slack.com/services/...', array(
'body' => wp_json_encode( array(
'text' => sprintf( 'Nová %s žádost #%d pro objednávku #%d', $type, $request_id, $order_id ),
) ),
) );
}, 10, 3 );

wpify_woo_withdrawal_claims_status_changed

Section titled “wpify_woo_withdrawal_claims_status_changed”

Pro custom workflow rozšíření, která mění status žádosti. Plugin sám status nikdy nemění.

do_action( 'wpify_woo_withdrawal_claims_status_changed', int $request_id, string $old_status, string $new_status );

wpify_woo_withdrawal_claims_before_email_send / after_email_send

Section titled “wpify_woo_withdrawal_claims_before_email_send / after_email_send”

Spouštějí se kolem odesílání e-mailu.

do_action( 'wpify_woo_withdrawal_claims_before_email_send', WC_Email $email, int $request_id );
do_action( 'wpify_woo_withdrawal_claims_after_email_send', WC_Email $email, int $request_id, bool $success );

wpify_woo_withdrawal_claims_my_account_after_buttons

Section titled “wpify_woo_withdrawal_claims_my_account_after_buttons”

Vlož vlastní obsah pod tlačítka v Můj účet.

do_action( 'wpify_woo_withdrawal_claims_my_account_after_buttons', WC_Order $order );

wpify_woo_withdrawal_claims_form_before / form_after

Section titled “wpify_woo_withdrawal_claims_form_before / form_after”

Obal formulář vlastním HTML.

do_action( 'wpify_woo_withdrawal_claims_form_before', string $type, ?WC_Order $order );
do_action( 'wpify_woo_withdrawal_claims_form_after', string $type, ?WC_Order $order );

Formulář interně používá dva REST endpointy:

EndpointMetodaÚčel
/wp-json/wpify-woo/v1/withdrawal-claims/validatePOSTValiduje auth pole (untrusted scénář) a vrátí předrenderované HTML eligibility sekce
/wp-json/wpify-woo/v1/withdrawal-claims/submitPOSTFinální podání — validuje vše, uloží do DB, odešle e-maily

Oba endpointy přijímají JSON body s poli formuláře. Autentifikace přes X-WP-Nonce header (REST nonce) plus interní _wpify_woo_nonce form-specifický nonce.

Tabulka: {prefix}wpify_woo_requests (vytvořena automaticky přes Wpify\Model\CustomTableRepository).

SloupecTypPoznámka
idINT, AUTO_INCREMENT, PK
request_typeVARCHAR(20)withdrawal | claim
order_idBIGINTWC order ID
order_numberVARCHAR(50)Pro zobrazení/vyhledávání
customer_emailVARCHAR(255)Snapshot billing_email v okamžiku podání
customer_nameVARCHAR(255)Jméno z formuláře
items_jsonTEXTJSON [{line_item_id, quantity}]
reasonTEXTVolitelné u withdrawal, povinné u claim
scopeVARCHAR(20)whole_order | specific_items
statusVARCHAR(50)Default submitted, plugin nemění — extension point
period_endDATETIMESnapshot konce lhůty v okamžiku podání
submitted_atDATETIMEVyžadováno směrnicí 2023/2673
customer_ip, customer_user_agentVARCHARAudit
created_atDATETIME
TřídaElement
.wpify-woo-formWrapper sekce formuláře
.wpify-woo-form--withdrawal / .wpify-woo-form--claimType-specific class
.wpify-woo-form--submittedThank-you stav
.wpify-woo-form--loadingLoading stav během AJAXu
.wpify-woo-form-errorsBlok chybových zpráv
.wpify-woo-itemsItems fieldset (toggle scope radiem)
.wpify-woo-scopeScope radio fieldset
.woocommerce-form-withdrawal / .woocommerce-form-claimClass form elementu
.wpify-woo-helper-textHelper text pod submit tlačítkem
Meta klíčTypPopis
_wpify_woo_withdrawal_excludedyes/noVyloučeno z odstoupení
_wpify_woo_warranty_excludedyes/noVyloučeno ze záruky/reklamace
_wpify_woo_withdrawal_period_overrideint (dny)Per-produkt lhůta pro odstoupení
_wpify_woo_warranty_months_overrideint (měsíce)Per-produkt záruční doba
Meta klíčTypPopis
_wpify_woo_period_startdatetime (mysql)Uloženo pluginem, když objednávka poprvé přejde do stavu konfigurovaného jako start lhůty

Vlastní funkce můžeš přidat do:

  • Souboru functions.php ve vašem child tématu
  • Pluginu Code Snippets
  • Vlastního pluginu