Visualizzare tutte le sottocategorie di una categoria specifica?

30 mag 2013, 12:47:47
Visualizzazioni: 75.6K
Voti: 9

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?

0
Tutte le risposte alla domanda 2
13
22

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>';
}

Fonte/ispirazione

Modifica:

Codice completato, testato, vedi commenti

30 mag 2013 13:43:29
Commenti

Grazie, ma non so come inserire quel codice nel mio, comunque ho trovato questo codice:

[http://wordpress.stackexchange.com/questions/73795/how-to-split-the-categories-of-subcategories-with-thumbnails]

ma mostra tutte le categorie, a me serve solo una categoria selezionata con le sue sottocategorie

Yhis Yhis
30 mag 2013 13:51:48

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

Yhis Yhis
30 mag 2013 14:20:06

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.

Nicolai Grossherr Nicolai Grossherr
30 mag 2013 14:36:35

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.

Yhis Yhis
30 mag 2013 14:49:55

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

Yhis Yhis
30 mag 2013 15:27:46

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

Yhis Yhis
30 mag 2013 15:54:50

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

Yhis Yhis
30 mag 2013 16:09:55

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

Nicolai Grossherr Nicolai Grossherr
30 mag 2013 16:36:26

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

Yhis Yhis
30 mag 2013 16:39:38

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.

Yhis Yhis
30 mag 2013 16:48:49

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

Yhis Yhis
30 mag 2013 16:51:42

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!

Nicolai Grossherr Nicolai Grossherr
30 mag 2013 16:56:27

Grazie per questo :)

Adrian Adrian
18 dic 2020 17:18:57
Mostra i restanti 8 commenti
1

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; ?> 
11 dic 2014 04:27:10
Commenti

Una forma più semplice della risposta di @mikes senza l'opzione dell'immagine - puoi sostituire le righe 6-10 con: <a href="<?php echo get_term_link( $wcatTerm->slug, $wcatTerm->taxonomy ); ?>"><?php echo $wcatTerm->name; ?></a>

Jon Jon
27 mag 2015 15:14:31