Mostra tutte le categorie incluse le sottocategorie

2 ott 2013, 14:23:52
Visualizzazioni: 20.9K
Voti: 1

Sto cercando di visualizzare un elenco di tutte le categorie e sottocategorie sotto quella categoria. Sono riuscito a ottenere un elenco di tutte le categorie che sono genitori ma sto avendo difficoltà a rilevare se hanno figli e poi visualizzarli nel loop corrente. Ecco il mio codice al momento:

$args = array(
  'orderby' => 'name',
  'parent' => 0
  );
$categories = get_categories( $args );
foreach ( $categories as $category ) {

    echo '<a href="' . get_category_link( $category->term_id ) . '">' . $category->name . '</a><br />';

}

Ho trovato alcune funzioni qui per rilevare se la categoria ha figli, ma sto avendo difficoltà a visualizzare effettivamente i figli (fino a un livello) sotto questo link.

Ogni aiuto è molto apprezzato, Simon

0
Tutte le risposte alla domanda 5
0

Ho soluzioni molto concise di 4 righe, mostra le categorie e sottocategorie con il conteggio dei post.

$cats = get_terms('category');
foreach ($cats as $cat) {
  echo $cat->name . "<br>" . "(" . $cat->count . ")"; 
}
17 giu 2021 18:46:08
0

Risolto con il seguente codice:

$args = array(
  'orderby' => 'name',
  'parent' => 0
  );
$categories = get_categories( $args );
$first = true;
  foreach ($categories as $category) {
    if ( $first )
    {
        echo '<li class="title" style="border-top: 0px;"><a href="acatalog/abovegroundpools.html">'.$category->cat_name.'</a>';
        $first = false;
    }
    else
    {
        echo '<li class="title"><a href="acatalog/abovegroundpools.html">'.$category->cat_name.'</a>';
    }
    $theid = $category->term_id;
    $children = $wpdb->get_results( "SELECT term_id FROM $wpdb->term_taxonomy WHERE parent=$theid" );
        $no_children = count($children);
    if ($no_children > 0) {
        echo "<ul>";
        $args2 = array(
         'orderby' => 'name',
         'parent' => 2
         );
        $args2["parent"]=$category->term_id;
        $categories2 = get_categories( $args2 );
         foreach ($categories2 as $category2) {

            echo '<li><a href="acatalog/Inflatable-Hot-Tubs.html">'.$category2->cat_name.'</a></li>';

        }
        echo '</ul>';
    } else {
    echo '</li>';
    }

  }
 ?>
2 ott 2013 16:19:25
0
function my_Categ_tree($catId, $depth){
    $depth .= '-';  $output ='';
    $args = 'hierarchical=1&taxonomy=category&hide_empty=0&parent=';    $categories = get_categories($args . $catId);
    if(count($categories)>0){
        foreach ($categories as $category) {
            $selected = ($cat->term_id=="22") ? " selected": "";
            $output .=  '<option value="'.$category->cat_ID.'" '.$selected .'>'.$depth.$category->cat_name.'</option>';
            $output .=  my_Categ_tree($category->cat_ID,$depth);
        }
    }
    return $output;
}

echo my_Categ_tree(0,'');
21 gen 2015 16:08:56
1
<?php

    // Ottieni le categorie di primo livello e le elenca
    $args = array('orderby' => 'name', 'parent' => 0);
    $categories = get_categories( $args );

    foreach ($categories as $category) {

    echo $category->cat_name . '<br>';

    $args2 = array('orderby' => 'name', 'parent' => $category->cat_ID);
    $subcategories = get_categories( $args2 );

    echo '<ul>';

    // Durante l'elencazione delle categorie di primo livello
    // elenca anche le loro sottocategorie
    foreach ($subcategories as $subcategory) {
        echo '<li>' . $subcategory->cat_name . '</li>';
    }

    echo '</ul>';

    }
?>
12 mar 2018 21:51:18
Commenti

Per favore [modifica] la tua risposta e aggiungi una spiegazione: perché questa soluzione potrebbe risolvere il problema?

fuxia fuxia
13 mar 2018 02:30:45
0

Se vuoi visualizzare tutte le categorie e sottocategorie di una tassonomia personalizzata, usa questo codice e assicurati di fornire lo slug della tua tassonomia.

function ow_categories_with_subcategories( $taxonomy ) {

    // Ottieni le categorie principali che appartengono alla tassonomia fornita (quelle senza genitore)
    $categories = get_terms( 
        array(
            'taxonomy'   => $taxonomy,
            'parent'     => 0, // <-- Nessun Genitore
            'orderby'    => 'term_id',
            'hide_empty' => true // <!-- cambia in false per visualizzare anche quelle vuote
        )
    );
    ?>
    <div>
        <?php
        // Itera attraverso tutte le categorie per visualizzare ogni singola categoria
        foreach ( $categories as $category ) {

            $cat_name = $category->name;
            $cat_id   = $category->term_id;
            $cat_slug = $category->slug;

            // Visualizza il nome di ogni singola categoria
            echo '<h3>Categoria: ' . $cat_name . ' - ID: ' . $cat_id . ' - Slug: ' . $cat_slug  . '</h3>'; 


            // Ottieni tutte le sottocategorie che appartengono alla categoria corrente
            $subcategories = get_terms(
                array(
                    'taxonomy'   => $taxonomy,
                    'parent'     => $cat_id, // <-- Il genitore è la categoria corrente
                    'orderby'    => 'term_id',
                    'hide_empty' => true
                )
            );
            ?>
            <div>
                <?php
                // Itera attraverso tutte le sottocategorie per visualizzare ogni singola sottocategoria
                foreach ( $subcategories as $subcategory ) {

                    $subcat_name = $subcategory->name;
                    $subcat_id   = $subcategory->term_id;
                    $subcat_slug = $subcategory->slug;

                    // Visualizza il nome di ogni singola sottocategoria con ID e Slug
                    echo '<h4>Sottocategoria: ' . $subcat_name . ' - ID: ' . $subcat_id . ' - Slug: ' . $subcat_slug  . '</h4>';
                }
                ?>
            </div>
            <?php
        }
        ?>
    </div>
    <?php
}
ow_categories_with_subcategories( 'il_nome_della_tua_tassonomia' );
3 gen 2019 06:10:21