Skrytí konkrétní kategorie z celé WooCommerce e-shopu, pomocí jednoduchého snippetu.
Občas se může stát, že máte v e-shopu produkty, které nechcete na e-shopu zobrazovat, pokud je zařadíte do specifické kategorie.
Například, všechny produkty v kategorii Accessories, jak je vidět za screenu z testovacího webu:
Když použijete akci woocommerce_product_query, pro přístup k objektu query, můžete výpis produktů upravovat v podstatě jakkoliv.
Na internetu najdete řadu návodů, které doporučují používat pre_get_posts, ale ten hook je používán napříč celým webe, takže musíte vypodmínkovat, zda se jedná o query produktů. U woocommerce_product_query nemusíte.
Funkce:
add_action( 'woocommerce_product_query', 'custom_pre_get_posts_query' );
function custom_pre_get_posts_query( $q ) {
$tax_query = (array) $q->get( 'tax_query' );
$tax_query[] = array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array( 'accessories' ),
'operator' => 'NOT IN'
);
$q->set( 'tax_query', $tax_query );
}
V případě, že budete chtít raději použít id kategorií, tak změníte slug na ids a místo polí slugů, použijete id kategorií. Když budete chtít skrýt více kategorií, rozšíříte pole terms o další položku.
Výsledek:
Jak můžete vidět, ve výpisu produktů již kategorie Accessories není. K tomuto článku mne inspiroval Alf v komentáři u kompletního odebrání kategorií z e-shopu – https://musilda.cz/deaktivace-vypisu-kategorii-produktu-ve-woocommerce/#comment-367523, což je technicky něco jiného, protože upravujete to, jak jsou definovány custom taxonomies v e-shopu.