Template systém
Tento obsah zatím není dostupný ve vašem jazyce.
Komplexní průvodce template systémem pluginu - jak upravovat šablony, používat hooky a filtry.
Přehled
Section titled “Přehled”Plugin používá WordPressTemplates systém z wpify/templates pro renderování všech front-end prvků.
Hlavní výhody:
- Šablony lze přepsat v tématu (child-theme compatible)
- Každá šablona obsahuje hooky pro rozšíření
- Data lze filtrovat před renderováním
- WordPress standardní API (
get_template_part(),load_template())
Dostupné šablony
Section titled “Dostupné šablony”Plugin obsahuje tyto šablony v templates/ složce:
1. info-block.php
Section titled “1. info-block.php”Účel: Wrapper pro discount info bloky na produktových stránkách.
Použití: Zobrazuje pricing tabulky a zprávy o slevách na produktové stránce.
Argumenty:
$args = [ 'items' => [], // Array of items with 'rule', 'content', 'pricing' 'product' => WC_Product, // Product object 'classes' => [ 'block' => ['wpify-woo-discount-info-block'], 'item' => ['wpify-woo-discount-info-block__item'], 'content' => ['wpify-woo-discount-info-block__content'], 'pricing' => ['wpify-woo-discount-info-block__pricing'], ],];Hooky v šabloně:
wpify_woo_discounts_info_block_html_start- Na začátku blokuwpify_woo_discounts_info_block_html_item_start- Na začátku každé položkywpify_woo_discounts_info_block_html_item_before_pricing- Před pricing tabulkouwpify_woo_discounts_info_block_html_item_end- Na konci každé položkywpify_woo_discounts_info_block_html_end- Na konci bloku
2. pricing-table.php
Section titled “2. pricing-table.php”Účel: Cenová tabulka pro Bulk/Bundle slevy.
Použití: Zobrazuje tabulku “Kup víc, plať méně”.
Argumenty:
$args = [ 'classes' => ['wpify-woo-discount-table'], // Table CSS classes 'header' => ['Množství', 'Cena'], // Header labels 'body' => [ ['3-5 ks', '100 Kč'], ['6-10 ks', '90 Kč'], ], // Rows with cells];Hooky: Žádné (pure presentational template).
3. selection-block.php
Section titled “3. selection-block.php”Účel: Wrapper pro Manual Select výběr produktů (dárky, BOGO).
Použití: Zobrazuje seznam produktů k výběru v košíku.
Argumenty:
$args = [ 'rule' => [], // Rule configuration 'data' => [], // Display data (classes, labels, etc.) 'component_id' => 'unique-id', // Unique component ID 'available_products' => [], // Available products for selection 'rule_type' => 'free_gift', // Rule type 'rule_id' => '123', // Rule ID];Hooky v šabloně:
wpify_woo_discounts_selection_html_before_list- Před seznamem produktůwpify_woo_discounts_selection_html_list_start- Na začátku seznamuwpify_woo_discounts_selection_html_item- Pro každý produkt (vykresluje selection-item.php)wpify_woo_discounts_selection_html_list_end- Na konci seznamuwpify_woo_discounts_selection_html_after_list- Za seznamem produktů
4. selection-item.php
Section titled “4. selection-item.php”Účel: Jedna položka v Manual Select seznamu.
Použití: Zobrazuje jeden produkt s tlačítkem “Vybrat”.
Argumenty:
$args = [ 'item_data' => [], // Item data (classes, stock status, button label, etc.) 'product' => WC_Product, // Product object 'rule' => [], // Rule configuration 'image_html' => '<img...>', // Prepared image HTML 'price_data' => [ 'original_price' => 100, 'discounted_price' => 80, 'discount_amount' => 20, ],];Hooky v šabloně:
wpify_woo_discounts_selection_html_item_start- Na začátku položkywpify_woo_discounts_selection_html_item_content_start- Na začátku obsahuwpify_woo_discounts_selection_html_item_details_start- Na začátku detailůwpify_woo_discounts_selection_html_item_details_end- Na konci detailůwpify_woo_discounts_selection_html_item_before_form- Před formulářemwpify_woo_discounts_selection_html_item_content_end- Na konci obsahuwpify_woo_discounts_selection_html_item_end- Na konci položky
5. upsell-bar.php
Section titled “5. upsell-bar.php”Účel: Progress bar s motivací k vyššímu nákupu.
Použití: Zobrazuje progress bar v košíku/pokladně.
Argumenty:
$args = [ 'bar' => [], // Bar configuration 'index' => 0, // Bar index 'data' => [ 'additional_classes' => [], // Custom classes 'is_single' => false, // Single or multi mode 'first_goal_icon_html' => '<svg...>', // Icon for single mode 'message' => 'Add $50 more...', // Current message 'goals_data' => [], // Goals with progress data ], 'progress' => [], // Progress data];Hooky: Žádné (uses filters instead, see below).
6. savings-summary.php
Section titled “6. savings-summary.php”Účel: Zobrazení přehledu úspor v košíku/pokladně (mimo tabulku).
Použití: Zobrazuje seznam aplikovaných slev a celkovou částku úspor jako blok.
Argumenty:
$args = [ 'tracking' => [], // Discount tracking data 'total_saved' => 0, // Total saved amount (float) 'labels' => [], // Array of discount labels (strings) 'show_labels' => true, // Whether to display labels 'show_value' => true, // Whether to display saved value];Hooky v šabloně:
wpify_woo_discounts_savings_summary_start- Na začátku blokuwpify_woo_discounts_savings_summary_end- Na konci bloku
Shortcode:
[wpify_discounts_savings_summary]Shortcode vykreslí kompletní blok včetně fragment wrapperu pro AJAX aktualizace.
Fragment podpora:
Šablona obsahuje CSS třídu wpify-woo-savings-summary-fragment pro WooCommerce AJAX fragment replacement. Wrapper se vykresluje vždy (i prázdný), aby fragmenty fungovaly správně.
Block cart podpora:
Plugin automaticky injektuje savings summary do WooCommerce block košíku pomocí Store API extension a render_block filtru.
7. savings-summary-table-row.php
Section titled “7. savings-summary-table-row.php”Účel: Zobrazení přehledu úspor jako řádek v tabulce součtů košíku.
Použití: Zobrazuje úspory přímo v tabulce cart totals (hook woocommerce_cart_totals_after_order_total).
Argumenty:
$args = [ 'tracking' => [], // Discount tracking data 'total_saved' => 0, // Total saved amount (float) 'labels' => [], // Array of discount labels (strings) 'show_labels' => true, // Whether to display labels 'show_value' => true, // Whether to display saved value];Výstup:
<tr class="wpify-woo-savings-summary-row"> <th>Ušetřili jste</th> <td> <span class="wpify-woo-savings-summary__value">150 Kč</span> <small class="wpify-woo-savings-summary__labels">(Zimní sleva, VIP)</small> </td></tr>8. coupon-block.php
Section titled “8. coupon-block.php”Účel: CTA blok pro přidání produktu do košíku s kupónem.
Použití: Zobrazuje tlačítko “Přidat do košíku se slevou” na produktové stránce.
Modul: Coupons (volitelný modul)
Argumenty:
$args = [ 'coupon' => [ 'button_text' => 'Koupit za 199 Kč', // Text tlačítka 'coupon_code' => 'SLEVA20', // Kód kupónu 'discounted_price' => 199.00, // Cena po slevě 'url' => '...', // URL pro přidání ], 'title' => 'Speciální nabídka!', // Nadpis bloku 'url' => '...', // URL pro přidání do košíku 'product' => WC_Product, // Product object];Hooky v šabloně:
wpify_woo_discounts_coupon_block_html_start- Na začátku blokuwpify_woo_discounts_coupon_block_html_end- Na konci bloku
Předdefinované styly: V nastavení modulu Coupons lze vybrat styl:
minimal- Jednoduchý světlý designbordered- Ohraničený s přerušovanou čároushine- Barevný s animacícustom- Vlastní CSS (žádné výchozí styly)
Jak funguje template systém
Section titled “Jak funguje template systém”WordPressTemplates priorita
Section titled “WordPressTemplates priorita”Plugin používá WordPressTemplates třídu, která hledá šablony v tomto pořadí:
- Child theme -
{child-theme}/wpify-woo-discount-rules/{template}.php - Parent theme -
{theme}/wpify-woo-discount-rules/{template}.php - Plugin templates -
{plugin}/templates/{template}.php
Příklad:
// Plugin volá:$this->templates->print('info-block', null, $args);
// WordPress hledá v tomto pořadí:// 1. wp-content/themes/my-child-theme/wpify-woo-discount-rules/info-block.php// 2. wp-content/themes/my-theme/wpify-woo-discount-rules/info-block.php// 3. wp-content/plugins/wpify-woo-discount-rules/templates/info-block.phpJak přepsat šablony
Section titled “Jak přepsat šablony”Základní přepsání
Section titled “Základní přepsání”Krok 1: Vytvořte složku v tématu
wp-content/themes/your-theme/wpify-woo-discount-rules/Krok 2: Zkopírujte šablonu z pluginu
cp wp-content/plugins/wpify-woo-discount-rules/templates/info-block.php \ wp-content/themes/your-theme/wpify-woo-discount-rules/info-block.phpKrok 3: Upravte šablonu dle potřeby
Příklad: Custom info-block šablona
Section titled “Příklad: Custom info-block šablona”Soubor: your-theme/wpify-woo-discount-rules/info-block.php
<?php/** * Custom Info Block Template */defined( 'ABSPATH' ) || exit;
$items = $args['items'] ?? [];$product = $args['product'] ?? null;?>
<div class="my-custom-discount-block"> <h3>Speciální nabídky!</h3>
<?php foreach ( $items as $item ) : ?> <div class="my-custom-discount-item"> <?php if ( ! empty( $item['content'] ) ) : ?> <div class="discount-message"> <?php echo wp_kses_post( $item['content'] ); ?> </div> <?php endif; ?>
<?php if ( ! empty( $item['pricing'] ) ) : ?> <div class="discount-pricing"> <?php echo wp_kses_post( $item['pricing'] ); ?> </div> <?php endif; ?> </div> <?php endforeach; ?></div>Příklad: Custom pricing-table šablona
Section titled “Příklad: Custom pricing-table šablona”Soubor: your-theme/wpify-woo-discount-rules/pricing-table.php
<?php/** * Custom Pricing Table Template - Cards layout */defined( 'ABSPATH' ) || exit;
$header = $args['header'] ?? [];$body = $args['body'] ?? [];?>
<div class="custom-pricing-cards"> <?php foreach ( $body as $index => $row ) : ?> <div class="pricing-card"> <div class="pricing-card__quantity"> <?php echo esc_html( $row[0] ); ?> </div> <div class="pricing-card__price"> <?php echo wp_kses_post( $row[1] ); ?> </div> <?php if ( 0 === $index ) : ?> <span class="pricing-card__badge">Nejlepší nabídka!</span> <?php endif; ?> </div> <?php endforeach; ?></div>Filtry pro data šablon
Section titled “Filtry pro data šablon”Před renderováním šablony můžete upravit data pomocí filtrů.
wpify_templates_template_args
Section titled “wpify_templates_template_args”Univerzální filtr pro všechny šablony. Spouští se před renderováním jakékoli šablony.
add_filter('wpify_templates_template_args', function($args, $slug, $name, $filename, $templates) { // Upravte args pro všechny šablony
if ($slug === 'info-block') { // Přidejte custom třídu pro info-block $args['classes']['block'][] = 'my-custom-class'; }
return $args;}, 10, 5);Parametry:
$args(array) - Template argumenty$slug(string) - Template slug (např. ‘info-block’)$name(string|null) - Template name (např. null)$filename(string) - Full filename (např. ‘info-block’)$templates(WordPressTemplates) - Templates instance
wpify_woo_discounts_info_block_args
Section titled “wpify_woo_discounts_info_block_args”Filtr pro info-block šablonu. Spouští se před renderováním info bloku.
add_filter('wpify_woo_discounts_info_block_args', function($args, $product) { // Přidejte custom wrapper třídu $args['classes']['block'][] = 'my-info-block-class';
// Přidejte custom položku $args['items'][] = [ 'rule' => [], 'content' => '<p>Extra info zde!</p>', 'pricing' => '', ];
return $args;}, 10, 2);Parametry:
$args(array) - Info block argumenty$product(WC_Product) - Product object
wpify_woo_discounts_info_block_item_content
Section titled “wpify_woo_discounts_info_block_item_content”Filtr pro obsah každé položky v info bloku.
add_filter('wpify_woo_discounts_info_block_item_content', function($content, $rule, $product) { // Pro Bulk slevy přidejte custom zprávu if ($rule['type'] === 'bulk') { $content = '<strong>Množstevní sleva!</strong><br>' . $content; }
return $content;}, 10, 3);Parametry:
$content(string) - Current content (může být prázdný)$rule(array) - Rule configuration$product(WC_Product) - Product object
wpify_woo_discounts_info_block_item_pricing
Section titled “wpify_woo_discounts_info_block_item_pricing”Filtr pro pricing každé položky v info bloku.
add_filter('wpify_woo_discounts_info_block_item_pricing', function($pricing, $rule, $product) { // Pro Bundle slevy upravte pricing HTML if ($rule['type'] === 'bundle') { // $pricing obsahuje HTML pricing tabulky $pricing = '<div class="bundle-pricing">' . $pricing . '</div>'; }
return $pricing;}, 10, 3);Parametry:
$pricing(string) - Current pricing HTML (může být prázdný)$rule(array) - Rule configuration$product(WC_Product) - Product object
wpify_woo_discounts_selection_html_data
Section titled “wpify_woo_discounts_selection_html_data”Filtr pro data selection bloku (Manual Select).
add_filter('wpify_woo_discounts_selection_html_data', function($data) { // Přidejte custom třídu $data['classes']['block'][] = 'my-selection-block';
// Změňte title $data['title'] = 'Vyber si svůj dárek!';
// Změňte description $data['description'] = 'Dostaneš ho zdarma k objednávce.';
return $data;});Parametry:
$data(array) - Display data (classes, title, description, button labels)
wpify_woo_discounts_selection_html_item_data
Section titled “wpify_woo_discounts_selection_html_item_data”Filtr pro data každé položky v selection seznamu.
add_filter('wpify_woo_discounts_selection_html_item_data', function($item_data, $product, $settings, $hidden_elements) { // Upravte button label if ($product->is_on_sale()) { $item_data['button_label'] = 'Vybrat tento výprodej!'; }
// Přidejte custom třídu $item_data['classes']['item'][] = 'on-sale-item';
return $item_data;}, 10, 4);Parametry:
$item_data(array) - Item data (classes, button label, stock status, etc.)$product(WC_Product) - Product object$settings(array) - Nastavení Manual Select skupiny$hidden_elements(array) - Seznam skrytých elementů
wpify_woo_discounts_upsell_bar_data
Section titled “wpify_woo_discounts_upsell_bar_data”Filtr pro data upsell baru.
add_filter('wpify_woo_discounts_upsell_bar_data', function($data, $bar, $index) { // Přidejte custom třídu $data['additional_classes']['block'][] = 'my-upsell-class';
// Upravte zprávu $data['message'] = $data['message'];
return $data;}, 10, 3);Parametry:
$data(array) - Display data (classes, message, goals_data, etc.)$bar(array) - Bar configuration$index(int) - Bar index
wpify_woo_discounts_upsell_bar_wrapper_classes
Section titled “wpify_woo_discounts_upsell_bar_wrapper_classes”Filtr pro wrapper třídy upsell baru.
add_filter('wpify_woo_discounts_upsell_bar_wrapper_classes', function($classes, $bar, $index) { // Přidejte třídu podle indexu $classes[] = 'upsell-bar-' . $index;
// Přidejte třídu podle typu $type = $bar['type'] ?? ''; if ($type === 'cart_subtotal') { $classes[] = 'upsell-bar--subtotal'; }
return $classes;}, 10, 3);Parametry:
$classes(array) - Wrapper CSS classes$bar(array) - Bar configuration$index(int) - Bar index
Action Hooky v šablonách
Section titled “Action Hooky v šablonách”Každá šablona obsahuje action hooks pro přidání vlastního HTML.
Info Block hooky
Section titled “Info Block hooky”// Na začátku blokuadd_action('wpify_woo_discounts_info_block_html_start', function($items, $product) { echo '<div class="custom-intro">Speciální slevy pro tento produkt:</div>';}, 10, 2);
// Na začátku každé položkyadd_action('wpify_woo_discounts_info_block_html_item_start', function($items, $product) { echo '<span class="item-badge">SLEVA</span>';}, 10, 2);
// Před pricing tabulkouadd_action('wpify_woo_discounts_info_block_html_item_before_pricing', function($items, $product) { echo '<p class="pricing-intro">Cenová tabulka:</p>';}, 10, 2);
// Na konci každé položkyadd_action('wpify_woo_discounts_info_block_html_item_end', function($items, $product) { echo '<a href="/sale">Zobrazit všechny slevy</a>';}, 10, 2);
// Na konci blokuadd_action('wpify_woo_discounts_info_block_html_end', function($items, $product) { echo '<div class="custom-footer">* Slevy platí do odvolání</div>';}, 10, 2);Selection Block hooky
Section titled “Selection Block hooky”// Před seznamem produktůadd_action('wpify_woo_discounts_selection_html_before_list', function($rule, $data) { echo '<div class="selection-intro">Vyber si jeden z produktů:</div>';}, 10, 2);
// Na začátku seznamuadd_action('wpify_woo_discounts_selection_html_list_start', function($rule, $data) { echo '<div class="list-header">Dostupné produkty:</div>';}, 10, 2);
// Pro každý produkt (custom render)add_action('wpify_woo_discounts_selection_html_item', function($rule, $data, $product_entry) { // Defaultně se zde vykresluje selection-item.php // Můžete zde vykreslit vlastní HTML místo výchozí šablony}, 10, 3);
// Na konci seznamuadd_action('wpify_woo_discounts_selection_html_list_end', function($rule, $data) { echo '<div class="list-footer">Všechny produkty skladem</div>';}, 10, 2);
// Za seznamem produktůadd_action('wpify_woo_discounts_selection_html_after_list', function($rule, $data) { echo '<p class="selection-note">Výběr lze změnit i po přidání do košíku.</p>';}, 10, 2);Selection Item hooky
Section titled “Selection Item hooky”// Na začátku položkyadd_action('wpify_woo_discounts_selection_html_item_start', function($rule, $item_data, $product) { if ($product->is_featured()) { echo '<span class="featured-badge">Doporučujeme!</span>'; }}, 10, 3);
// Na začátku obsahuadd_action('wpify_woo_discounts_selection_html_item_content_start', function($rule, $item_data, $product) { echo '<div class="item-wrapper">';}, 10, 3);
// Na začátku detailůadd_action('wpify_woo_discounts_selection_html_item_details_start', function($rule, $item_data, $product) { $sku = $product->get_sku(); if ($sku) { echo '<span class="sku">SKU: ' . esc_html($sku) . '</span>'; }}, 10, 3);
// Na konci detailůadd_action('wpify_woo_discounts_selection_html_item_details_end', function($rule, $item_data, $product) { // Přidejte rating woocommerce_template_loop_rating();}, 10, 3);
// Před formulářemadd_action('wpify_woo_discounts_selection_html_item_before_form', function($rule, $item_data, $product) { echo '<div class="stock-info">' . wc_get_stock_html($product) . '</div>';}, 10, 3);
// Na konci obsahuadd_action('wpify_woo_discounts_selection_html_item_content_end', function($rule, $item_data, $product) { echo '</div>'; // Close wrapper from content_start}, 10, 3);
// Na konci položkyadd_action('wpify_woo_discounts_selection_html_item_end', function($rule, $item_data, $product) { echo '<hr class="item-separator">';}, 10, 3);Praktické příklady
Section titled “Praktické příklady”Příklad 1: Přidat countdown do info bloku
Section titled “Příklad 1: Přidat countdown do info bloku”add_action('wpify_woo_discounts_info_block_html_start', function($items, $product) { // Najděte pravidlo s časovým omezením foreach ($items as $item) { $rule = $item['rule'] ?? []; $conditions = $rule['conditions'] ?? [];
foreach ($conditions as $condition_group) { foreach ($condition_group as $condition) { if ($condition['type'] === 'date' && !empty($condition['date_end'])) { $end_date = strtotime($condition['date_end']); if ($end_date > time()) { echo '<div class="discount-countdown">'; echo 'Sleva platí ještě ' . human_time_diff(time(), $end_date); echo '</div>'; return; // Stop after first } } } } }}, 10, 2);Příklad 2: Upravit button label podle produktu
Section titled “Příklad 2: Upravit button label podle produktu”add_filter('wpify_woo_discounts_selection_html_item_data', function($item_data, $product, $settings, $hidden_elements) { // Upravte label podle stavu produktu if ($product->is_on_sale()) { $item_data['button_label'] = 'Vybrat akční produkt'; } elseif ($product->is_featured()) { $item_data['button_label'] = 'Vybrat doporučený'; } else { $item_data['button_label'] = 'Vybrat'; }
return $item_data;}, 10, 4);Příklad 3: Custom pricing table layout
Section titled “Příklad 3: Custom pricing table layout”Soubor: your-theme/wpify-woo-discount-rules/pricing-table.php
<?php/** * Custom Pricing Table - Horizontal Cards */defined( 'ABSPATH' ) || exit;
$header = $args['header'] ?? [];$body = $args['body'] ?? [];?>
<div class="custom-pricing-horizontal"> <h4 class="pricing-title">Čím více kupujete, tím více šetříte!</h4>
<div class="pricing-cards-row"> <?php foreach ( $body as $index => $row ) : ?> <div class="pricing-card <?php echo 0 === $index ? 'pricing-card--best' : ''; ?>"> <?php if ( 0 === $index ) : ?> <span class="badge">Nejlepší nabídka</span> <?php endif; ?>
<div class="card-quantity"> <?php echo esc_html( $row[0] ); ?> </div>
<div class="card-price"> <?php echo wp_kses_post( $row[1] ); ?> </div> </div> <?php endforeach; ?> </div></div>
<style>.custom-pricing-horizontal { margin: 20px 0; padding: 20px; background: #f7f7f7; border-radius: 8px;}
.pricing-title { text-align: center; margin-bottom: 20px;}
.pricing-cards-row { display: flex; gap: 15px; justify-content: center;}
.pricing-card { flex: 1; max-width: 200px; padding: 20px; background: white; border: 2px solid #ddd; border-radius: 8px; text-align: center; position: relative;}
.pricing-card--best { border-color: #008B8B; transform: scale(1.05);}
.pricing-card .badge { position: absolute; top: -10px; left: 50%; transform: translateX(-50%); background: #008B8B; color: white; padding: 5px 15px; border-radius: 20px; font-size: 12px; font-weight: bold;}
.card-quantity { font-size: 18px; font-weight: bold; margin-bottom: 10px;}
.card-price { font-size: 24px; color: #008B8B;}</style>Příklad 4: Přidat vlastní pole do selection itemu
Section titled “Příklad 4: Přidat vlastní pole do selection itemu”// Přidejte custom field do product metaadd_action('wpify_woo_discounts_selection_html_item_details_end', function($rule, $item_data, $product) { // Přidejte delivery time $delivery = get_post_meta($product->get_id(), '_delivery_time', true); if ($delivery) { echo '<div class="delivery-time">'; echo 'Dodání: ' . esc_html($delivery); echo '</div>'; }
// Přidejte skladem echo '<div class="stock-status">'; if ($product->is_in_stock()) { echo 'Skladem'; } else { echo 'Vyprodáno'; } echo '</div>';}, 10, 3);Příklad 5: Změnit třídy podle product kategorie
Section titled “Příklad 5: Změnit třídy podle product kategorie”add_filter('wpify_woo_discounts_selection_html_item_data', function($item_data, $product, $settings, $hidden_elements) { // Přidejte třídu podle kategorie $categories = $product->get_category_ids();
foreach ($categories as $cat_id) { $cat = get_term($cat_id, 'product_cat'); if ($cat) { $item_data['classes']['item'][] = 'category-' . $cat->slug; } }
return $item_data;}, 10, 4);Často kladené otázky
Section titled “Často kladené otázky”Musím přepsat celou šablonu?
Ne. Můžete použít hooky pro přidání vlastního HTML bez přepisování šablony.
Příklad:
// Místo přepsání info-block.php:add_action('wpify_woo_discounts_info_block_html_start', function($items, $product) { echo '<div class="my-custom-intro">Custom HTML zde</div>';}, 10, 2);Jak zjistím jaké argumenty má šablona?
Každá šablona má docblock komentář v hlavičce souboru s popisem $args.
Příklad:
/** * Info Block Template * * @var array $args Template arguments * - items (array) Array of items with 'rule', 'content', 'pricing' * - product (WC_Product) Product object */Mohu používat child theme?
Ano. WordPressTemplates hledá šablony nejprve v child theme, pak v parent theme, pak v pluginu.
Struktura:
wp-content/themes/my-child-theme/└── wpify-woo-discount-rules/ ├── info-block.php ├── pricing-table.php └── selection-item.phpJak debugovat šablony?
1. Zjistěte, která šablona se používá:
add_filter('wpify_templates_template_args', function($args, $slug, $name, $filename) { error_log("Loading template: $filename"); error_log("Args: " . print_r($args, true)); return $args;}, 10, 4);2. Vypište argumenty v šabloně:
<?php// V šabloněecho '<pre>';print_r($args);echo '</pre>';?>Jak odstranit výchozí hook?
Použijte remove_action() nebo remove_filter().
Příklad:
// Najděte hook v kódu pluginu// Např. pokud plugin přidává hook v ManualSelectMode::setup_default_template_hooks()
// Odstraňte hookremove_action('wpify_woo_discounts_selection_html_item', [ $manual_select_instance, 'render_selection_item'], 10);
// Přidejte vlastníadd_action('wpify_woo_discounts_selection_html_item', 'my_custom_item_render', 10, 3);