Přeskočit na obsah

Hooky a filtry

Plugin WPify Woo Feeds poskytuje hooky a filtry pro přizpůsobení generování feedů a dat produktů.

Filtruje dostupné feed moduly.

apply_filters( 'wpify_woo_feeds_modules', array $modules );

Parametry:

  • $modules (array) — Pole instancí feed modulů

Příklad — odebrání Alza feed modulu:

/**
* Odebrání Alza feed modulu
*
* @param array $modules Feed moduly
* @return array
*/
function my_remove_alza_feed( $modules ) {
unset( $modules['feed_alza'] );
return $modules;
}
add_filter( 'wpify_woo_feeds_modules', 'my_remove_alza_feed' );

Filtruje název produktu ve feedu.

apply_filters( 'wpify_woo_feeds_item_title', string $item_title, $product, $parent_product );

Parametry:

  • $item_title (string) — Název produktu
  • $product (object) — Objekt produktu
  • $parent_product (object|null) — Rodičovský produkt (pro varianty)

Příklad — přidání názvu obchodu k titulku:

/**
* Přidání názvu obchodu za název produktu
*
* @param string $title Název produktu
* @param object $product Produkt
* @return string
*/
function my_feed_item_title( $title, $product ) {
return $title . ' | MůjObchod';
}
add_filter( 'wpify_woo_feeds_item_title', 'my_feed_item_title', 10, 2 );

Filtruje jméno produktu ve feedu (alternativa k titulku).

apply_filters( 'wpify_woo_feeds_item_name', string $item_name, $product, $parent_product );

Parametry:

  • $item_name (string) — Jméno produktu
  • $product (object) — Objekt produktu
  • $parent_product (object|null) — Rodičovský produkt (pro varianty)

Filtruje cestu k adresáři, kam se ukládají feed soubory.

apply_filters( 'wpify_woo_feeds_dir_path', string $dir_path, string $feed_name, $feed );

Parametry:

  • $dir_path (string) — Výchozí cesta k adresáři
  • $feed_name (string) — Název feedu
  • $feed (object) — Instance feedu

Tyto filtry používají název feedu jako prefix (např. google_merchants_feed, heureka_cz_feed, zbozi_feed, alza_feed).

Filtruje ID produktů zahrnutých ve feedu.

apply_filters( '{feed_name}_feed_product_ids', array $product_ids );

Příklad — vyloučení konkrétního produktu z Google Merchants feedu:

/**
* Vyloučení produktu z Google Merchants feedu
*
* @param array $product_ids ID produktů
* @return array
*/
function my_exclude_product_from_feed( $product_ids ) {
return array_diff( $product_ids, [ 123 ] );
}
add_filter( 'google_merchants_feed_feed_product_ids', 'my_exclude_product_from_feed' );

Filtruje data feedu před generováním XML.

apply_filters( '{feed_name}_feed_data', array $data, string $feed_name );

Parametry:

  • $data (array) — Pole dat feedu
  • $feed_name (string) — Název feedu

Přeskočení jednotlivých produktů z feedu.

apply_filters( '{feed_name}_skip_product', bool $skip, $product, string $feed_name );

Parametry:

  • $skip (bool) — Zda produkt přeskočit (výchozí: false)
  • $product (object) — Objekt produktu
  • $feed_name (string) — Název feedu

Příklad — přeskočení produktů ve skryté kategorii:

/**
* Přeskočení produktů v kategorii "hidden" z Google Merchants feedu
*
* @param bool $skip Zda přeskočit
* @param object $product Produkt
* @return bool
*/
function my_skip_hidden_products( $skip, $product ) {
if ( has_term( 'hidden', 'product_cat', $product->get_id() ) ) {
return true;
}
return $skip;
}
add_filter( 'google_merchants_feed_skip_product', 'my_skip_hidden_products', 10, 2 );

Přepsání počtu produktů na běh pro konkrétní feed.

apply_filters( '{feed_name}_products_per_run', int $products_per_run );

Příklad — snížení počtu pro Google Merchants:

/**
* Zpracování pouze 50 produktů na běh pro Google Merchants
*
* @param int $count Počet produktů
* @return int
*/
function my_feed_products_per_run( $count ) {
return 50;
}
add_filter( 'google_merchants_feed_products_per_run', 'my_feed_products_per_run' );

Filtruje název výstupního souboru feedu.

apply_filters( '{feed_name}_feed_filename', string $filename, string $feed_name, $feed );

Parametry:

  • $filename (string) — Výchozí název souboru (např. heureka_1.xml)
  • $feed_name (string) — Název feedu
  • $feed (object) — Instance feedu

Filtruje WooCommerce query argumenty pro načtení ID produktů.

apply_filters( '{feed_name}_get_product_ids_args', array $args );

Parametry:

  • $args (array) — Argumenty pro wc_get_products() (limit, status, visibility, return)

Filtrování dat jednotlivých položek před zápisem do feedu. Každý feed má vlastní filtr.

Příklad — přidání custom label do Google Merchants:

/**
* Přidání custom label pro produkty ve slevě
*
* @param array $item Data položky feedu
* @param object $product Produkt
* @return array
*/
function my_google_custom_label( $item, $product ) {
if ( $product->is_on_sale() ) {
$item['custom_label_0'] = 'sale';
}
return $item;
}
add_filter( 'wpify_woo_feeds_google_merchants_item_data', 'my_google_custom_label', 10, 2 );

Příklad — nahrazení WEBP obrázků za JPG v Heureka feedu:

/**
* Nahrazení .webp koncovky za .jpg v URL obrázků Heureka feedu
*
* @param array $data Data položky feedu
* @param object $product Produkt
* @return array
*/
function my_replace_webp_images( $data, $product ) {
foreach ( $data as $key => &$value ) {
if ( strpos( $key, 'IMGURL' ) !== false && is_array( $value ) && isset( $value['_cdata'] ) ) {
$value['_cdata'] = preg_replace( '/\.webp$/i', '.jpg', $value['_cdata'] );
}
}
return $data;
}
add_filter( 'wpify_woo_feeds_heureka_item_data', 'my_replace_webp_images', 10, 2 );

Dostupné filtry dat položek:

  • wpify_woo_feeds_google_merchants_item_data
  • wpify_woo_feeds_heureka_item_data
  • wpify_woo_feeds_zbozi_item_data
  • wpify_woo_feeds_alza_item_data
  • heureka_availability_item_data

Spuštěno před generováním feedu přes WP-CLI.

do_action( 'wpify_woo_feeds_cli_before_generate_feed', array $args, array $assoc_args );

Parametry:

  • $args (array) — Poziční argumenty WP-CLI
  • $assoc_args (array) — Asociativní argumenty WP-CLI

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