Visualizzare tutte le sottocategorie di una categoria specifica?
Ho bisogno di mostrare tutte le sottocategorie utilizzando
$product_category = wp_get_post_terms( $post->ID, 'product_cat' );
attualmente uso:
<?php
global $post;
$terms = get_the_terms( $post->ID, 'product_cat', 'hide_empty=0' );
foreach ( $terms as $term ){
$category_id = $term->term_id;
$category_name = $term->name;
$category_slug = $term->slug;
echo '<li><a href="'. get_term_link($term->slug, 'product_cat') .'">'.$category_name.'</a></li>';
}
?>
Va bene ma mostra solo la categoria genitore e una sola sottocategoria...
Come posso risolvere?

Prova qualcosa come questo:
per ID
function woocommerce_subcats_from_parentcat_by_ID($parent_cat_ID) {
$args = array(
'hierarchical' => 1,
'show_option_none' => '',
'hide_empty' => 0,
'parent' => $parent_cat_ID,
'taxonomy' => 'product_cat'
);
$subcats = get_categories($args);
echo '<ul class="wooc_sclist">';
foreach ($subcats as $sc) {
$link = get_term_link( $sc->slug, $sc->taxonomy );
echo '<li><a href="'. $link .'">'.$sc->name.'</a></li>';
}
echo '</ul>';
}
per NOME
function woocommerce_subcats_from_parentcat_by_NAME($parent_cat_NAME) {
$IDbyNAME = get_term_by('name', $parent_cat_NAME, 'product_cat');
$product_cat_ID = $IDbyNAME->term_id;
$args = array(
'hierarchical' => 1,
'show_option_none' => '',
'hide_empty' => 0,
'parent' => $product_cat_ID,
'taxonomy' => 'product_cat'
);
$subcats = get_categories($args);
echo '<ul class="wooc_sclist">';
foreach ($subcats as $sc) {
$link = get_term_link( $sc->slug, $sc->taxonomy );
echo '<li><a href="'. $link .'">'.$sc->name.'</a></li>';
}
echo '</ul>';
}
Modifica:
Codice completato, testato, vedi commenti

Grazie, ma non so come inserire quel codice nel mio, comunque ho trovato questo codice:
ma mostra tutte le categorie, a me serve solo una categoria selezionata con le sue sottocategorie

Grazie amico, l'ho copiato e incollato nel mio woocommerce-template.php nella parte dove mi serve, ma mostra tutte le categorie e nessuna sottocategoria; per favore dai un'occhiata al link che ho postato sopra, dovrebbe essere così ma con una sola categoria e le sue sottocategorie

Ho dato una rapida occhiata al codice delle domande che hai linkato. Quello che vuoi fare è usare solo la parte associata a $sub_cats = get_categories( $args2 )
e la parte $args2 = array( ... )
, ma detto questo, quello che ho suggerito è praticamente lo stesso. Quindi non sono proprio sicuro del perché non funzioni nel tuo caso.

se rimuovo function woocommerce_subcats_from_parentcat($parent_cat) {
funziona, ma mostra solo le categorie principali, non le sottocategorie. Se copio e incollo il tuo codice così com'è, mostra una pagina vuota, nulla.

Ok, mostra le sottocategorie e non la categoria principale, ma solo se inserisco '23', con '21' è tutto vuoto.. grazie per il tuo aiuto, se potessi sistemare quest'ultimo piccolo bug sarebbe fantastico per me

ok funziona, ho solo bisogno di mostrare la categoria principale sopra le sottocategorie: CATEGORIA PRINCIPALE - sottocategoria - sottocategoria

ok, amico mio, tutto funziona perfettamente! grazie mille!! solo una piccola domanda: è possibile mostrare sempre la categoria principale quando clicco su una sottocategoria?

certamente è possibile, ma mi sembra una domanda, fagliela correttamente; questo potrebbe aiutarti: http://wordpress.stackexchange.com/questions/56784/get-main-parent-categories-for-a-product

sì probabilmente è la soluzione migliore, ma come posso richiamare queste due funzioni nella mia pagina?

comunque, il problema rimane: woocommerce_subcats_from_parentcat_by_ID($parent_cat_ID) mostra solo le sottocategorie, e woocommerce_subcats_from_parentcat_by_NAME($parent_cat_NAME) mostra solo TUTTE le categorie principali senza sottocategorie.

Ho bisogno di PRINCIPALE->sottocategoria e quando clicco sulla sottocategoria dovrebbe essere lo stesso che per il genitore 'PRINCIPALE->sottocategoria'. Voglio che questo tipo di menu non cambi se clicco su PRINCIPALE o su una sottocategoria

Prima di tutto, entrambe le funzioni funzionano perfettamente per me, forse stai usando una di loro in modo errato. In secondo luogo, dovresti essere in grado di ottenere il comportamento desiderato con le informazioni qui e nella domanda collegata sopra. Buona fortuna!

Ecco il codice che ha funzionato per me in un template di pagina (il mio ID genitore era 7):
<?php $wcatTerms = get_terms('product_cat', array('hide_empty' => 0, 'orderby' => 'ASC', 'parent' => 7, ));
foreach($wcatTerms as $wcatTerm) :
$wthumbnail_id = get_woocommerce_term_meta( $wcatTerm->term_id, 'thumbnail_id', true );
$wimage = wp_get_attachment_url( $wthumbnail_id );
?>
<div><a href="<?php echo get_term_link( $wcatTerm->slug, $wcatTerm->taxonomy ); ?>">
<?php if($wimage!=""):?><img src="<?php echo $wimage?>" class="aligncenter" alt="Immagine categoria <?php echo $wcatTerm->name; ?>" title="Vai alla categoria <?php echo $wcatTerm->name; ?>"><?php endif;?></a>
<h3 class="text-center"><a href="<?php echo get_term_link( $wcatTerm->slug, $wcatTerm->taxonomy ); ?>"><?php echo $wcatTerm->name; ?></a></h3>
</div>
<?php endforeach; ?>
