Afișează toate categoriile inclusiv sub-categoriile
2 oct. 2013, 14:23:52
Vizualizări: 20.9K
Voturi: 1
Încerc să afișez o listă cu toate categoriile și sub-categoriile sub fiecare categorie principală. Am reușit să obțin o listă cu toate categoriile părinte, dar am dificultăți în a detecta dacă acestea au categorii copil și apoi să le afișez în bucla curentă. Iată codul meu până în acest moment:
$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 />';
}
Am găsit câteva funcții aici despre cum să detectez dacă categoria are copii, dar am dificultăți în a afișa efectiv copiii (până la un nivel) sub această legătură.
Orice ajutor este apreciat, Simon
Toate răspunsurile la întrebare
5
0
Rezolvat cu următoarele:
$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 oct. 2013 16:19:25
0
/**
* Funcție pentru afișarea unei liste ierarhice de categorii sub formă de dropdown
* @param int $catId - ID-ul categoriei părinte
* @param string $depth - Nivelul de adâncime pentru afișare ierarhică
* @return string - Codul HTML pentru lista de categorii
*/
function my_Categ_tree($catId, $depth){
$depth .= '-'; $output ='';
// Argumente pentru obținerea categoriilor
$args = 'hierarchical=1&taxonomy=category&hide_empty=0&parent=';
$categories = get_categories($args . $catId);
// Verificăm dacă există categorii
if(count($categories)>0){
foreach ($categories as $category) {
// Marchează categoria selectată (exemplu pentru ID 22)
$selected = ($cat->term_id=="22") ? " selected": "";
// Adaugă opțiunea în lista dropdown
$output .= '<option value="'.$category->cat_ID.'" '.$selected .'>'.$depth.$category->cat_name.'</option>';
// Recursivitate pentru subcategorii
$output .= my_Categ_tree($category->cat_ID,$depth);
}
}
return $output;
}
// Afișează întreaga structură ierarhică începând cu categoria rădăcină
echo my_Categ_tree(0,'');

T.Todua
5.85K
21 ian. 2015 16:08:56
1
<?php
// Obține categorii de nivel superior și le listează
$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>';
// În timp ce listează categoriile de nivel superior
// listează și subcategoriile acestora
foreach ($subcategories as $subcategory) {
echo '<li>' . $subcategory->cat_name . '</li>';
}
echo '</ul>';
}
?>

jeyhunms
11
12 mar. 2018 21:51:18
0
Dacă dorești să afișezi toate categoriile și subcategoriile unei taxonomii personalizate, folosește acest cod și asigură-te că furnizezi slug-ul taxonomiei tale.
function ow_categories_with_subcategories( $taxonomy ) {
// Obține categoriile de top care aparțin taxonomiei furnizate (cele fără părinte)
$categories = get_terms(
array(
'taxonomy' => $taxonomy,
'parent' => 0, // <-- Fără părinte
'orderby' => 'term_id',
'hide_empty' => true // <!-- schimbă în false pentru a afișa și cele goale
)
);
?>
<div>
<?php
// Iterează prin toate categoriile pentru a afișa fiecare categorie individuală
foreach ( $categories as $category ) {
$cat_name = $category->name;
$cat_id = $category->term_id;
$cat_slug = $category->slug;
// Afișează numele fiecărei categorii individuale
echo '<h3>Categorie: ' . $cat_name . ' - ID: ' . $cat_id . ' - Slug: ' . $cat_slug . '</h3>';
// Obține toate subcategoriile care aparțin categoriei curente
$subcategories = get_terms(
array(
'taxonomy' => $taxonomy,
'parent' => $cat_id, // <-- Părintele este categoria curentă
'orderby' => 'term_id',
'hide_empty' => true
)
);
?>
<div>
<?php
// Iterează prin toate subcategoriile pentru a afișa fiecare subcategorie individuală
foreach ( $subcategories as $subcategory ) {
$subcat_name = $subcategory->name;
$subcat_id = $subcategory->term_id;
$subcat_slug = $subcategory->slug;
// Afișează numele fiecărei subcategorii individuale cu ID și Slug
echo '<h4>Subcategorie: ' . $subcat_name . ' - ID: ' . $subcat_id . ' - Slug: ' . $subcat_slug . '</h4>';
}
?>
</div>
<?php
}
?>
</div>
<?php
}
ow_categories_with_subcategories( 'numele_taxonomiei_tale' );

epicrato
201
3 ian. 2019 06:10:21
Întrebări similare