Skip to content

Hooks pro UI a info bloky

Filtry pro úpravu zobrazení slev na produktových stránkách a v košíku.

Filtr umožňuje upravit label (název slevy) v info bloku.

apply_filters( 'wpify_woo_discounts_info_block_item_label', $label, $rule, $product );
ParametrTypPopis
$labelstringText labelu (název pravidla)
$rulearrayPole s nastavením pravidla
$productWC_ProductAktuální produkt
/**
* Přidat emoji k labelu podle typu slevy
*
* @param string $label Text labelu
* @param array $rule Pravidlo
* @param WC_Product $product Produkt
*
* @return string
*/
function add_emoji_to_label( $label, $rule, $product ): string {
$emoji = match ( $rule['rule_type'] ?? '' ) {
'bulk' => '📦 ',
'bundle' => '🎁 ',
'free_gift' => '🎀 ',
'buy_x_get_x' => '🔥 ',
default => '💰 ',
};
return $emoji . $label;
}
add_filter( 'wpify_woo_discounts_info_block_item_label', 'add_emoji_to_label', 10, 3 );

Filtr umožňuje upravit obsah info bloku (zprávu a countdown) na produktové stránce.

apply_filters( 'wpify_woo_discounts_info_block_item_content', $content, $rule, $product );
ParametrTypPopis
$contentstringHTML obsah (message + countdown)
$rulearrayPole s nastavením pravidla
$productWC_ProductAktuální produkt
/**
* Přidat informaci o dopravě zdarma k info bloku
*
* @param string $content HTML obsah
* @param array $rule Pravidlo
* @param WC_Product $product Produkt
*
* @return string
*/
function add_free_shipping_info( $content, $rule, $product ): string {
$content .= '<p class="free-shipping-note">+ doprava zdarma při objednávce nad 1000 Kč</p>';
return $content;
}
add_filter( 'wpify_woo_discounts_info_block_item_content', 'add_free_shipping_info', 10, 3 );
/**
* Přidat badge podle typu slevy
*
* @param string $content HTML obsah
* @param array $rule Pravidlo
* @param WC_Product $product Produkt
*
* @return string
*/
function add_discount_badge( $content, $rule, $product ): string {
$badge = '';
switch ( $rule['rule_type'] ?? '' ) {
case 'bulk':
$badge = '<span class="discount-badge bulk">Množstevní sleva</span>';
break;
case 'bundle':
$badge = '<span class="discount-badge bundle">Balíčková sleva</span>';
break;
case 'buy_x_get_x':
case 'buy_x_get_y':
$badge = '<span class="discount-badge bogo">BOGO akce</span>';
break;
}
return $badge . $content;
}
add_filter( 'wpify_woo_discounts_info_block_item_content', 'add_discount_badge', 10, 3 );

Filtr umožňuje upravit HTML výstup cenové tabulky (pro bulk/bundle slevy).

apply_filters( 'wpify_woo_discounts_info_block_item_pricing', $html, $rule, $product );
ParametrTypPopis
$htmlstringHTML cenové tabulky
$rulearrayNastavení pravidla (od v1.0.2 obsahuje pouze validní subrules)
$productWC_ProductAktuální produkt
/**
* Přidat vlastní hlavičku nad pricing tabulku
*
* @param string $html HTML tabulky
* @param array $rule Pravidlo
* @param WC_Product $product Produkt
*
* @return string
*/
function add_pricing_table_header( $html, $rule, $product ): string {
$header = '<h4 class="pricing-table-title">Čím více kupujete, tím více šetříte!</h4>';
return $header . $html;
}
add_filter( 'wpify_woo_discounts_info_block_item_pricing', 'add_pricing_table_header', 10, 3 );
/**
* Skrýt pricing tabulku pro produkty v kategorii "výprodej"
*
* @param string $html HTML tabulky
* @param array $rule Pravidlo
* @param WC_Product $product Produkt
*
* @return string
*/
function hide_pricing_for_clearance( $html, $rule, $product ): string {
if ( has_term( 'vyprodej', 'product_cat', $product->get_id() ) ) {
return ''; // Skrýt tabulku
}
return $html;
}
add_filter( 'wpify_woo_discounts_info_block_item_pricing', 'hide_pricing_for_clearance', 10, 3 );

Filtr umožňuje upravit kompletní argumenty pro šablonu info bloku.

apply_filters( 'wpify_woo_discounts_info_block_args', $args, $product );
ParametrTypPopis
$argsarrayArgumenty pro šablonu
$productWC_ProductAktuální produkt
$args = array(
'items' => array(
array(
'label' => '...', // Text labelu (název pravidla)
'content' => '...', // HTML obsah (message + countdown)
'pricing' => '...', // HTML pricing tabulky
'rule' => array(), // Data pravidla
),
// další položky...
),
'classes' => array(
'block' => array( 'wpify-woo-discount-info-block' ),
'item' => array( 'wpify-woo-discount-info-block__item' ),
'label' => array( 'wpify-woo-discount-info-block__label' ),
'content' => array( 'wpify-woo-discount-info-block__content' ),
'pricing' => array( 'wpify-woo-discount-info-block__pricing' ),
),
'product' => WC_Product,
);
/**
* Přidat vlastní CSS třídu k info bloku
*
* @param array $args Argumenty šablony
* @param WC_Product $product Produkt
*
* @return array
*/
function add_custom_class_to_info_block( $args, $product ): array {
$args['classes']['block'][] = 'my-custom-discount-block';
// Přidat třídu podle kategorie produktu
if ( has_term( 'premium', 'product_cat', $product->get_id() ) ) {
$args['classes']['block'][] = 'premium-product-discount';
}
return $args;
}
add_filter( 'wpify_woo_discounts_info_block_args', 'add_custom_class_to_info_block', 10, 2 );
/**
* Seřadit položky info bloku podle priority pravidel
*
* @param array $args Argumenty šablony
* @param WC_Product $product Produkt
*
* @return array
*/
function sort_info_block_items( $args, $product ): array {
usort( $args['items'], function( $a, $b ) {
$priority_a = $a['rule']['priority'] ?? 10;
$priority_b = $b['rule']['priority'] ?? 10;
return $priority_a - $priority_b;
} );
return $args;
}
add_filter( 'wpify_woo_discounts_info_block_args', 'sort_info_block_items', 10, 2 );
/**
* Zobrazit maximálně 2 slevy na produktové stránce
*
* @param array $args Argumenty šablony
* @param WC_Product $product Produkt
*
* @return array
*/
function limit_displayed_discounts( $args, $product ): array {
if ( count( $args['items'] ) > 2 ) {
$args['items'] = array_slice( $args['items'], 0, 2 );
}
return $args;
}
add_filter( 'wpify_woo_discounts_info_block_args', 'limit_displayed_discounts', 10, 2 );

Parametr $rule v UI filtrech je nyní pole s nastavením pravidla (rule settings array), dříve byl subrule array. Pokud používáte tyto filtry, ověřte kompatibilitu.


Filtry pro úpravu štítků (badges) na produktech.

Filtr umožňuje upravit seznam štítků pro produkt.

apply_filters( 'wpify_woo_discounts_product_badges', $badges, $product );
ParametrTypPopis
$badgesarrayPole badges pro produkt
$productWC_ProductAktuální produkt
/**
* Přidat badge "Bestseller" pro produkty s vysokým prodejem
*
* @param array $badges Pole badges
* @param WC_Product $product Produkt
*
* @return array
*/
function add_bestseller_badge( $badges, $product ): array {
$total_sales = $product->get_total_sales();
if ( $total_sales > 100 ) {
$badges[] = array(
'type' => 'custom',
'label' => 'Bestseller',
'class' => 'bestseller-badge',
);
}
return $badges;
}
add_filter( 'wpify_woo_discounts_product_badges', 'add_bestseller_badge', 10, 2 );

Filtr umožňuje upravit výsledné HTML štítků.

apply_filters( 'wpify_woo_discounts_product_badges_html', $html, $badges, $product );
ParametrTypPopis
$htmlstringHTML výstup badges
$badgesarrayPole badges
$productWC_ProductAktuální produkt

Filtr umožňuje upravit text štítku včetně placeholderů.

apply_filters( 'wpify_woo_discounts_badge_text', $result, $replacements, $label, $data );
ParametrTypPopis
$resultstringVýsledný text po nahrazení
$replacementsarrayPole nahrazení ({discount}, {price}, atd.)
$labelstringPůvodní label šablona
$dataarrayData pro badge
/**
* Přidat vlastní placeholder {stock} pro počet skladem
*
* @param string $result Výsledný text
* @param array $replacements Pole nahrazení
* @param string $label Šablona
* @param array $data Data
*
* @return string
*/
function add_stock_placeholder( $result, $replacements, $label, $data ): string {
if ( isset( $data['product'] ) && strpos( $label, '{stock}' ) !== false ) {
$stock = $data['product']->get_stock_quantity() ?? 0;
$result = str_replace( '{stock}', $stock, $result );
}
return $result;
}
add_filter( 'wpify_woo_discounts_badge_text', 'add_stock_placeholder', 10, 4 );

Filtr umožňuje zakázat automatické vkládání badges.

apply_filters( 'wpify_woo_discounts_skip_badge_injection', $skip );
ParametrTypPopis
$skipboolVýchozí false, vrátit true pro přeskočení

Příklad: Zakázat na specifické stránce

Section titled “Příklad: Zakázat na specifické stránce”
/**
* Zakázat badges na stránce "výprodej"
*
* @param bool $skip Přeskočit injektáž
*
* @return bool
*/
function skip_badges_on_clearance( $skip ): bool {
if ( is_page( 'vyprodej' ) ) {
return true;
}
return $skip;
}
add_filter( 'wpify_woo_discounts_skip_badge_injection', 'skip_badges_on_clearance' );

Filtr umožňuje upravit generované CSS pro badges.

apply_filters( 'wpify_woo_discounts_badge_css', $css );
ParametrTypPopis
$cssstringCSS string

Filtr umožňuje upravit logiku určení “nového” produktu.

apply_filters( 'wpify_woo_discounts_is_product_new', $is_new, $product, $days );
ParametrTypPopis
$is_newboolZda je produkt nový (výchozí: publikován před $days dny)
$productWC_ProductProdukt
$daysintPočet dní pro “nový”

Filtr umožňuje přidat vlastní CSS selektory pro detekci produktové galerie na stránce produktu.

apply_filters( 'wpify_woo_discounts_badge_gallery_selectors', $selectors );
ParametrTypPopis
$selectorsarrayPole CSS selektorů

Příklad: Přidání selektoru pro vlastní téma

Section titled “Příklad: Přidání selektoru pro vlastní téma”
/**
* Přidat selektor pro vlastní téma
*
* @param array $selectors CSS selektory
*
* @return array
*/
function add_my_theme_gallery_selector( $selectors ): array {
$selectors[] = '.my-theme-product-gallery';
return $selectors;
}
add_filter( 'wpify_woo_discounts_badge_gallery_selectors', 'add_my_theme_gallery_selector' );

Action se spustí při inicializaci modulu Product Badge.

do_action( 'wpify_woo_discounts_product_badge_init', $module );
ParametrTypPopis
$moduleProductBadgeModuleInstance modulu

Filtr umožňuje přidat countdown badge z modulu Countdown nebo vlastního řešení.

apply_filters( 'wpify_woo_discounts_countdown_badge', $badge, $product );
ParametrTypPopis
$badgearray|nullData badge (null = nezobrazovat)
$productWC_ProductAktuální produkt
$badge = array(
'type' => 'countdown', // Typ badge pro CSS třídu
'text' => '2:30:45', // Text zobrazený na badge
);
/**
* Přidat countdown badge pro produkty s omezenou nabídkou
*
* @param array|null $badge Existující badge
* @param WC_Product $product Produkt
*
* @return array|null
*/
function add_custom_countdown_badge( $badge, $product ): ?array {
$end_date = get_post_meta( $product->get_id(), '_sale_end_date', true );
if ( ! $end_date ) {
return $badge;
}
$remaining = strtotime( $end_date ) - time();
if ( $remaining <= 0 ) {
return $badge;
}
$hours = floor( $remaining / 3600 );
$minutes = floor( ( $remaining % 3600 ) / 60 );
return array(
'type' => 'countdown',
'text' => sprintf( '%d:%02d', $hours, $minutes ),
);
}
add_filter( 'wpify_woo_discounts_countdown_badge', 'add_custom_countdown_badge', 10, 2 );

Filtry pro úpravu výběrového bloku (dárek zdarma, BOGO).

Filtr umožňuje upravit pozice, kde se zobrazí výběrový blok.

apply_filters( 'wpify_woo_discounts_selection_hooks', $hooks_map );
ParametrTypPopis
$hooks_maparrayMapa pozic a WooCommerce hooků
/**
* Přidat vlastní pozici pro výběrový blok
*
* @param array $hooks_map Mapa hooků
*
* @return array
*/
function add_custom_selection_position( $hooks_map ): array {
$hooks_map['my_custom_position'] = array(
'hook' => 'my_theme_after_cart',
'priority' => 10,
);
return $hooks_map;
}
add_filter( 'wpify_woo_discounts_selection_hooks', 'add_custom_selection_position' );

Filtr umožňuje upravit data pro šablonu výběrového bloku.

apply_filters( 'wpify_woo_discounts_selection_html_data', $data );
ParametrTypPopis
$dataarrayData pro šablonu (CSS třídy, texty)

Filtr umožňuje upravit data jednotlivé položky ve výběru.

apply_filters( 'wpify_woo_discounts_selection_html_item_data', $item_data, $product, $settings, $hidden_elements );
ParametrTypPopis
$item_dataarrayData položky (obrázek, název, atd.)
$productWC_ProductProdukt
$settingsarrayNastavení Manual Select skupiny
$hidden_elementsarraySeznam skrytých elementů

Filtr umožňuje upravit zobrazení ceny ve výběrovém bloku.

apply_filters( 'wpify_woo_discounts_selection_html_item_price_data', $price_data, $product, $rule );
ParametrTypPopis
$price_dataarrayData ceny (původní, sleva, výsledná)
$productWC_ProductProdukt
$rulearrayData pravidla

Filtry pro úpravu progress baru (upsell lišty).

Filtr umožňuje upravit data pro konkrétní upsell bar.

apply_filters( 'wpify_woo_discounts_upsell_bar_data', $data, $bar, $index );
ParametrTypPopis
$dataarrayData pro bar (progress, zprávy, cíl)
$bararrayNastavení baru
$indexintIndex baru

Příklad: Vlastní zpráva podle progressu

Section titled “Příklad: Vlastní zpráva podle progressu”
/**
* Upravit zprávu podle aktuálního progressu
*
* @param array $data Data baru
* @param array $bar Nastavení
* @param int $index Index
*
* @return array
*/
function custom_upsell_message( $data, $bar, $index ): array {
$progress = $data['progress'] ?? 0;
if ( $progress >= 75 ) {
$data['message'] = 'Už jen kousek! ' . $data['message'];
}
return $data;
}
add_filter( 'wpify_woo_discounts_upsell_bar_data', 'custom_upsell_message', 10, 3 );

Filtr umožňuje upravit CSS třídy wrapperu upsell baru.

apply_filters( 'wpify_woo_discounts_upsell_bar_wrapper_classes', $classes, $bar, $index );
ParametrTypPopis
$classesarrayPole CSS tříd
$bararrayNastavení baru
$indexintIndex baru

Kromě filtrů jsou k dispozici také action hooky pro přidání vlastního obsahu.

Action se spustí při vykreslování výběrových bloků v košíku.

do_action( 'wpify_woo_discounts_render_selections' );
/**
* Přidat vlastní obsah před výběrové bloky
*/
function add_content_before_selections(): void {
echo '<div class="my-custom-selection-header">';
echo '<h3>Vyberte si svůj dárek</h3>';
echo '</div>';
}
add_action( 'wpify_woo_discounts_render_selections', 'add_content_before_selections', 5 );

Action se spustí při vykreslování jednotlivé položky ve výběrovém bloku.

do_action( 'wpify_woo_discounts_selection_html_item', $product, $rule );
ParametrTypPopis
$productWC_ProductProdukt
$rulearrayNastavení pravidla
/**
* Přidat informaci o skladové dostupnosti k položce
*
* @param WC_Product $product Produkt
* @param array $rule Pravidlo
*/
function add_stock_info_to_selection_item( $product, $rule ): void {
$stock = $product->get_stock_quantity();
if ( $stock !== null && $stock < 5 ) {
echo '<span class="low-stock-warning">Pouze ' . $stock . ' ks skladem!</span>';
}
}
add_action( 'wpify_woo_discounts_selection_html_item', 'add_stock_info_to_selection_item', 10, 2 );

V šabloně info bloku jsou k dispozici action hooky pro přidání vlastního obsahu.

do_action( 'wpify_woo_discounts_info_block_html_before' );
do_action( 'wpify_woo_discounts_info_block_html_after' );
do_action( 'wpify_woo_discounts_info_block_html_item_before', $item, $product );
do_action( 'wpify_woo_discounts_info_block_html_item_after', $item, $product );
ParametrTypPopis
$itemarrayData položky (content, pricing, rule)
$productWC_ProductAktuální produkt
/**
* Přidat CTA tlačítko za info blok
*/
function add_cta_after_info_block(): void {
echo '<a href="/akce" class="discount-cta-button">Zobrazit všechny akce</a>';
}
add_action( 'wpify_woo_discounts_info_block_html_after', 'add_cta_after_info_block' );
/**
* Přidat ikonu před každou položku info bloku
*
* @param array $item Data položky
* @param WC_Product $product Produkt
*/
function add_icon_before_info_item( $item, $product ): void {
$rule_type = $item['rule']['rule_type'] ?? '';
$icon = match( $rule_type ) {
'bulk' => '📦',
'bundle' => '🎁',
default => '💰',
};
echo '<span class="discount-icon">' . $icon . '</span>';
}
add_action( 'wpify_woo_discounts_info_block_html_item_before', 'add_icon_before_info_item', 10, 2 );

V šabloně Savings Summary jsou k dispozici action hooky pro přidání vlastního obsahu.

do_action( 'wpify_woo_discounts_savings_summary_start', $tracking, $total_saved );
do_action( 'wpify_woo_discounts_savings_summary_end', $tracking, $total_saved );
ParametrTypPopis
$trackingarrayData o sledovaných slevách
$total_savedfloatCelková ušetřená částka
/**
* Přidat motivační zprávu před souhrn úspor
*
* @param array $tracking Data sledování
* @param float $total_saved Ušetřená částka
*/
function add_savings_motivation( $tracking, $total_saved ): void {
if ( $total_saved > 500 ) {
echo '<p class="savings-motivation">🎉 Skvělý nákup! Ušetřili jste více než 500 Kč!</p>';
}
}
add_action( 'wpify_woo_discounts_savings_summary_start', 'add_savings_motivation', 10, 2 );
/**
* Přidat odkaz na další akce za souhrn úspor
*
* @param array $tracking Data sledování
* @param float $total_saved Ušetřená částka
*/
function add_more_deals_link( $tracking, $total_saved ): void {
echo '<a href="/akce" class="more-deals-link">Zobrazit další akce →</a>';
}
add_action( 'wpify_woo_discounts_savings_summary_end', 'add_more_deals_link', 10, 2 );

Vlastní funkci můžete vložit buď do tzv. child šablony (functions.php) nebo pomocí pluginu Code Snippets.