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 (např. Sequential Order Numbers, custom prefixy). Volá se, když selže default ID lookup.

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 );

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 );

Modifikace seznamu polí formuláře (pokročilé — pro custom field doplňky).

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

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