Mostrar todas las categorías incluyendo subcategorías
2 oct 2013, 14:23:52
Vistas: 20.9K
Votos: 1
Estoy tratando de mostrar una lista de todas las categorías y subcategorías debajo de cada categoría principal. He logrado obtener una lista de todas las categorías que son padres, pero tengo dificultades para detectar si tienen hijos y mostrarlos en el bucle actual. Aquí está mi código actual:
$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 />';
}
He encontrado algunas funciones aquí sobre cómo detectar si la categoría tiene hijos, pero tengo dificultades para mostrar los hijos (hasta un nivel) debajo de este enlace.
Cualquier ayuda es muy apreciada, Simon

SimonStaton
129
Todas las respuestas a la pregunta
5
0
Resuelto con lo siguiente:
$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
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 ene 2015 16:08:56
1
<?php
// Obtener categorías principales y listarlas
$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>';
// Mientras se listan las categorías principales
// listar también sus subcategorías
foreach ($subcategories as $subcategory) {
echo '<li>' . $subcategory->cat_name . '</li>';
}
echo '</ul>';
}
?>

jeyhunms
11
12 mar 2018 21:51:18
0
Si deseas mostrar todas tus categorías y subcategorías de una taxonomía personalizada, utiliza este código y asegúrate de proporcionar el slug de tu taxonomía.
function ow_categories_with_subcategories( $taxonomy ) {
// Obtener las categorías principales que pertenecen a la taxonomía proporcionada (las que no tienen padre)
$categories = get_terms(
array(
'taxonomy' => $taxonomy,
'parent' => 0, // <-- Sin padre
'orderby' => 'term_id',
'hide_empty' => true // <!-- cambiar a false para mostrar también las vacías
)
);
?>
<div>
<?php
// Iterar a través de todas las categorías para mostrar cada categoría individual
foreach ( $categories as $category ) {
$cat_name = $category->name;
$cat_id = $category->term_id;
$cat_slug = $category->slug;
// Mostrar el nombre de cada categoría individual
echo '<h3>Categoría: ' . $cat_name . ' - ID: ' . $cat_id . ' - Slug: ' . $cat_slug . '</h3>';
// Obtener todas las subcategorías que pertenecen a la categoría actual
$subcategories = get_terms(
array(
'taxonomy' => $taxonomy,
'parent' => $cat_id, // <-- El padre es la categoría actual
'orderby' => 'term_id',
'hide_empty' => true
)
);
?>
<div>
<?php
// Iterar a través de todas las subcategorías para mostrar cada subcategoría individual
foreach ( $subcategories as $subcategory ) {
$subcat_name = $subcategory->name;
$subcat_id = $subcategory->term_id;
$subcat_slug = $subcategory->slug;
// Mostrar el nombre de cada subcategoría individual con ID y Slug
echo '<h4>Subcategoría: ' . $subcat_name . ' - ID: ' . $subcat_id . ' - Slug: ' . $subcat_slug . '</h4>';
}
?>
</div>
<?php
}
?>
</div>
<?php
}
ow_categories_with_subcategories( 'el_nombre_de_tu_taxonomia' );

epicrato
201
3 ene 2019 06:10:21
Preguntas relacionadas
1
respuestas
2
respuestas