Nascondere i prodotti non categorizzati dalla pagina del negozio
Quando WooCommerce è stato aggiornato alla versione 3.3, è stata aggiunta la categoria di prodotti 'Non categorizzato' che è apparsa poi in tutte le pagine (inclusa la pagina del negozio WooCommerce) dove venivano visualizzati i prodotti. Tutti i prodotti che non hanno almeno una categoria assegnata vengono quindi (logicamente, immagino) assegnati alla categoria 'Non categorizzato'.
Ho sempre utilizzato l'approccio (forse non ideale) di nascondere i prodotti stagionali rimuovendo tutte le categorie da questi prodotti quando erano fuori stagione. Questo nuovo cambiamento ha fatto sì che questi prodotti 'nascosti' apparissero improvvisamente sul sito in vendita in questa nuova categoria, cosa che non voglio in nessuna pagina.
Ho cercato sul web un modo per nascondere la categoria di prodotti 'Non categorizzato' e ho scoperto che questo problema è molto diffuso. Sono state proposte diverse soluzioni, tra cui rendere la categoria "Non categorizzato" una sottocategoria e poi nascondere tutte le sottocategorie o nascondere le categorie usando CSS.
Vedi https://wordpress.org/support/topic/uncategorized-product-category-still-showing-after-3-3-1/
Tuttavia, nessuna di queste soluzioni è abbastanza 'pulita' o robusta.
La mia soluzione alternativa è stata quella di mostrare solo i prodotti che voglio rendere visibili utilizzando lo shortcode delle categorie di prodotti (senza l'ID della categoria non categorizzata). Per esempio:
[product_categories ids="11, 19, 18, 14, 7, 8, 9, 10, 15, 98, 16, 17"]
ma questo non risolve il problema nella pagina del negozio (che non usa shortcode).
Mi chiedo se qualcuno ha un metodo robusto per nascondere la categoria di prodotti 'Non categorizzato' poiché è un problema attuale e sembra essere molto diffuso al momento.

Ho risolto questo problema basandomi sul codice gentilmente fornito da rynoldos (https://gist.github.com/rynaldos/a9d357b1e3791afd9bea48833ff95994) nel seguente modo:
Includi il seguente codice nel tuo file functions.php:
/** Rimuove categorie dal negozio e altre pagine
* in WooCommerce
*/
function wc_hide_selected_terms( $terms, $taxonomies, $args ) {
$new_terms = array();
if ( in_array( 'product_cat', $taxonomies ) && !is_admin() && is_shop() ) {
foreach ( $terms as $key => $term ) {
if ( ! in_array( $term->slug, array( 'uncategorized' ) ) ) {
$new_terms[] = $term;
}
}
$terms = $new_terms;
}
return $terms;
}
add_filter( 'get_terms', 'wc_hide_selected_terms', 10, 3 );
Questo codice si applica alla pagina del negozio in WooCommerce. Se vuoi applicarlo a una pagina diversa, sostituisci is_shop() con is_page('IL_TUO_SLUG_PAGINA').
Anch'io ho avuto difficoltà nel trovare una soluzione a questo problema, ma il codice sopra funziona bene per me.
