Hooks pro integrace
Filtry pro přidání podpory vlastních pluginů a integrací.
Vlastní konverze měn
Section titled “Vlastní konverze měn”Pokud používáte vlastní multi-currency řešení, můžete přidat podporu pomocí těchto filtrů.
Konverze ceny
Section titled “Konverze ceny”apply_filters( 'wpify_woo_discounts_convert_price', $converted, $price, $from_currency, $to_currency );Parametry filtru
Section titled “Parametry filtru”| Parametr | Typ | Popis |
|---|---|---|
$converted | float|null | Konvertovaná cena (null = použít fallback) |
$price | float | Původní cena |
$from_currency | string | Zdrojová měna |
$to_currency | string | Cílová měna |
Příklad použití
Section titled “Příklad použití”/** * Vlastní konverze měn pro custom plugin * * @param float|null $converted Konvertovaná cena * @param float $price Původní cena * @param string $from_currency Zdrojová měna * @param string $to_currency Cílová měna * * @return float|null */function custom_currency_conversion( $converted, $price, $from_currency, $to_currency ) { // Získat kurz z vlastního pluginu $rate = my_currency_plugin_get_rate( $from_currency, $to_currency );
if ( $rate ) { return $price * $rate; }
return $converted; // Fallback na detekovaný plugin}add_filter( 'wpify_woo_discounts_convert_price', 'custom_currency_conversion', 10, 4 );Detekce vlastního pluginu
Section titled “Detekce vlastního pluginu”apply_filters( 'wpify_woo_discounts_detect_currency_plugin', $detected );Parametry filtru
Section titled “Parametry filtru”| Parametr | Typ | Popis |
|---|---|---|
$detected | string|null | Název detekovaného pluginu |
Příklad použití
Section titled “Příklad použití”/** * Registrace vlastního currency pluginu * * @param string|null $detected Detekovaný plugin * * @return string|null */function detect_my_currency_plugin( $detected ) { if ( function_exists( 'my_currency_plugin_init' ) ) { return 'my_currency_plugin'; } return $detected;}add_filter( 'wpify_woo_discounts_detect_currency_plugin', 'detect_my_currency_plugin' );Překlad textových polí
Section titled “Překlad textových polí”Hooky pro vlastní řešení překladu message a label polí.
Překlad zprávy slevy
Section titled “Překlad zprávy slevy”apply_filters( 'wpify_woo_discounts_rule_message', $message, $rule );Parametry filtru
Section titled “Parametry filtru”| Parametr | Typ | Popis |
|---|---|---|
$message | string | Zpráva slevy |
$rule | array | Data pravidla |
Překlad labelu slevy
Section titled “Překlad labelu slevy”apply_filters( 'wpify_woo_discounts_rule_label', $label, $rule );Parametry filtru
Section titled “Parametry filtru”| Parametr | Typ | Popis |
|---|---|---|
$label | string | Label slevy |
$rule | array | Data pravidla |
Příklad: Vlastní překlad
Section titled “Příklad: Vlastní překlad”/** * Překlad zprávy přes vlastní systém * * @param string $message Zpráva * @param array $rule Pravidlo * * @return string */function translate_discount_message( $message, $rule ) { $rule_id = $rule['id'] ?? 0; $current_lang = my_get_current_language();
// Získat překlad z vlastní tabulky $translated = my_get_translation( 'discount_message', $rule_id, $current_lang );
return $translated ?: $message;}add_filter( 'wpify_woo_discounts_rule_message', 'translate_discount_message', 10, 2 );add_filter( 'wpify_woo_discounts_rule_label', 'translate_discount_message', 10, 2 );Převzetí položek košíku (UCM Skip)
Section titled “Převzetí položek košíku (UCM Skip)”Universal Cart Manager (UCM) iteruje všechny položky košíku označené DISCOUNTED_PRODUCT_TYPE a přepočítává ceny při každé změně košíku. Externí moduly, které vlastní discount-style cart items (např. dárky zdarma na kupón), si je mohou nárokovat, aby se jich UCM nedotýkalo.
apply_filters( 'wpify_woo_discounts_ucm_skip_item', $skip, $cart_item_key, $cart_item );Parametry filtru
Section titled “Parametry filtru”| Parametr | Typ | Popis |
|---|---|---|
$skip | bool | Zda přeskočit UCM lifecycle pro tuto položku. Výchozí false. |
$cart_item_key | string | Klíč položky v WC košíku. |
$cart_item | array | Pole položky košíku. |
Příklad použití
Section titled “Příklad použití”Vraťte true, když chcete mít exkluzivní kontrolu nad cenou a lifecyclem položky (cenu si nastavujete sami přes woocommerce_before_calculate_totals, odebírání řešíte sami, atd.). UCM pak položku v change_discounted_prices() ignoruje.
add_filter( 'wpify_woo_discounts_ucm_skip_item', function ( $skip, $key, $item ) { if ( isset( $item['_my_module_marker'] ) ) { return true; } return $skip;}, 10, 3 );Tento filtr interně používá modul Coupons pro funkci Dárek zdarma na kupón.
Kde umístit kód
Section titled “Kde umístit kód”Vlastní funkci můžete vložit buď do tzv. child šablony (functions.php) nebo pomocí pluginu Code Snippets.