Ottenere la lista delle categorie principali di prodotti in WooCommerce
Sto utilizzando un tema WooCommerce per il mio sito. Sto cercando di visualizzare una lista delle sole categorie principali dei prodotti. Ho provato questo codice, ma restituisce tutte le categorie principali e le sottocategorie.
$product_category = wp_get_post_terms( $post->ID, 'product_cat' );
Ho bisogno di visualizzare solo la lista delle categorie principali dei prodotti. Come posso fare?

Puoi farlo molto facilmente utilizzando gli shortcode di WooCommerce
echo do_shortcode('[product_categories number="12" columns="4"]');
Se vuoi che lo shortcode mostri tutte le categorie, fai così:
echo do_shortcode('[product_categories number="12" columns="4" parent="0"]');
Credo di essere stato abbastanza chiaro per farti capire.
Puoi anche dare un'occhiata a come viene fatto in content_product-cat.php e utilizzare il tuo loop personalizzato, tra l'altro gli shortcode sopra riporteranno il contenuto di questo file.

Per favore utilizza questo codice.
Funziona per me..
<?php
$term = get_queried_object()->term_id;
$termid = get_term($term, 'product_cat' );
$args = array(
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => false,
'child_of' => $term,
'parent' =>0
);
$subproducts = get_terms( 'product_cat', $args);
foreach ($subproducts as $subproduct) {
echo $subproduct->name; ?>

function get_root_term() {
global $post;
$prod_terms = get_the_terms( $post->ID, 'product_cat' );
foreach ($prod_terms as $prod_term) {
// ottiene l'ID della categoria del prodotto
$product_cat_id = $prod_term->term_id;
// ottiene un array con tutti i livelli delle categorie genitore
$product_parent_categories_all_hierachy = get_ancestors( $product_cat_id, 'product_cat' );
// Questo taglia l'array ed estrae l'ultimo elemento nell'array
$last_parent_cat = array_slice($product_parent_categories_all_hierachy, -1, 1, true);
foreach( $last_parent_cat as $last_parent_cat_value ) {
$root_term = $last_parent_cat_value;
}
}
return $root_term;
}
// utilizzo
$root_term = get_root_term();
if ( $root_term === 27 ) {
// fai qualcosa
}
