Hooky a filtry
Plugin WPify Woo Feeds poskytuje hooky a filtry pro přizpůsobení generování feedů a dat produktů.
Filtry feed modulů
Section titled “Filtry feed modulů”wpify_woo_feeds_modules
Section titled “wpify_woo_feeds_modules”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' );wpify_woo_feeds_item_title
Section titled “wpify_woo_feeds_item_title”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 );wpify_woo_feeds_item_name
Section titled “wpify_woo_feeds_item_name”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)
wpify_woo_feeds_dir_path
Section titled “wpify_woo_feeds_dir_path”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
Filtry jednotlivých feedů
Section titled “Filtry jednotlivých feedů”Tyto filtry používají název feedu jako prefix (např. google_merchants_feed, heureka_cz_feed, zbozi_feed, alza_feed).
{feed_name}_feed_product_ids
Section titled “{feed_name}_feed_product_ids”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' );{feed_name}_feed_data
Section titled “{feed_name}_feed_data”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
{feed_name}_skip_product
Section titled “{feed_name}_skip_product”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 );{feed_name}_products_per_run
Section titled “{feed_name}_products_per_run”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' );{feed_name}_feed_filename
Section titled “{feed_name}_feed_filename”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
{feed_name}_get_product_ids_args
Section titled “{feed_name}_get_product_ids_args”Filtruje WooCommerce query argumenty pro načtení ID produktů.
apply_filters( '{feed_name}_get_product_ids_args', array $args );Parametry:
$args(array) — Argumenty prowc_get_products()(limit, status, visibility, return)
Filtry dat položek
Section titled “Filtry dat položek”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_datawpify_woo_feeds_heureka_item_datawpify_woo_feeds_zbozi_item_datawpify_woo_feeds_alza_item_dataheureka_availability_item_data
wpify_woo_feeds_cli_before_generate_feed
Section titled “wpify_woo_feeds_cli_before_generate_feed”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
Kde umístit kód
Section titled “Kde umístit kód”Vlastní funkci můžete vložit buď do tzv. child šablony nebo pomocí pluginu Code Snippets.