Filtry pro vodoznaková pravidla

affinite_wp_watermark_rules_pre_validate – Úprava pravidel před validací

Tento filtr umožňuje upravit pravidla vodoznaků před jejich validací. Je užitečný pro:

  • Přidání výchozích hodnot
  • Úpravu pravidel podle podmínek
  • Dynamické změny pravidel
add_filter('affinite_wp_watermark_rules_pre_validate', function($rules) {
    // Přidání výchozího pravidla, pokud žádné neexistuje
    if (empty($rules)) {
        $rules[] = array(
            'type' => 'text',
            'text' => 'Default Watermark',
            'enabled' => true,
            // ... další nastavení
        );
    }
    
    return $rules;
});

affinite_wp_watermark_rules_validated – Úprava validovaných pravidel

Tento filtr umožňuje upravit validovaná pravidla pro konkrétní attachment. Je užitečný pro:

  • Podmíněné aplikování pravidel
  • Úpravu pravidel podle typu obrázku
  • Dynamické změny pro konkrétní obrázky
add_filter('affinite_wp_watermark_rules_validated', function($rules, $attachment_id) {
    // Aplikovat pravidla pouze na obrázky z konkrétní kategorie
    $post_id = wp_get_post_parent_id($attachment_id);
    if ($post_id) {
        $categories = wp_get_post_categories($post_id);
        if (!in_array(5, $categories)) { // Kategorie ID 5
            return array(); // Vrátit prázdné pole = žádná pravidla
        }
    }
    
    return $rules;
}, 10, 2);

Příklady použití

Příklad 1: Dynamický text vodoznaku

add_filter('affinite_wp_watermark_rules_pre_validate', function($rules) {
    foreach ($rules as &$rule) {
        if ($rule['type'] === 'text') {
            // Přidat aktuální rok do textu
            $rule['text'] = str_replace('{YEAR}', date('Y'), $rule['text']);
        }
    }
    return $rules;
});

Příklad 2: Podmíněné pravidla podle post type

add_filter('affinite_wp_watermark_rules_validated', function($rules, $attachment_id) {
    $post_id = wp_get_post_parent_id($attachment_id);
    if ($post_id) {
        $post_type = get_post_type($post_id);
        
        // Pro produkty použít jiná pravidla
        if ($post_type === 'product') {
            // Upravit pravidla pro produkty
            foreach ($rules as &$rule) {
                $rule['opacity'] = 80; // Vyšší průhlednost pro produkty
            }
        }
    }
    
    return $rules;
}, 10, 2);

Best practices

  • Vždy vracejte pole pravidel (i prázdné)
  • Používejte type hints pro lepší kompatibilitu
  • Testujte filtry na testovacím prostředí
  • Dokumentujte vlastní filtry