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
Tutte le risposte alla domanda
5
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>';
}
}
?>

SimonStaton
129
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,'');

T.Todua
5.85K
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>';
}
?>

jeyhunms
11
12 mar 2018 21:51:18
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' );

epicrato
201
3 gen 2019 06:10:21
Domande correlate