Obtener lista de subcategoría

3 minutos de lectura

avatar de usuario
permanente

Tengo esta categoría en mi wordpress:

Test1
  - Sub1OfTest1
  - Sub2OfTest1
Test2
  - Sub1OfTest2
  - Sub2OfTest2

Ahora estoy en url: http://localhost/wordpress/category/test1
Escribo el siguiente código en el archivo. category-test1.php

<?php
$categories =  get_categories('child_of=2');

print_r($categories);
foreach ($categories as $category) : ?>

        <div class="qitem">
            <a href="https://stackoverflow.com/questions/2040545/<?php get_category_link( $category->term_id ); ?>" title="<?php echo $category->name; ?>">
                <?php echo $category->name; ?>
            </a>
            <h4>
                <span class="caption">
                    <?php echo $category->name; ?>
                </span>
            </h4>
            <p>
                <span class="caption">
                    <?php echo $category->description; ?>
                </span>
            </p>
        </div>
<?php
endforeach;
?>

Estoy tratando de mostrar la subcategoría de Test1 pero el código solo devuelve una matriz (). ¿Qué me perdí?

avatar de usuario
LangostaHombre

¿Está vacía esa categoría? Por defecto, WordPress oculta las categorías emptr. probar:

$categories =  get_categories('child_of=2&hide_empty=0');

Editar: Arreglado, gracias @Stoep

  • sí, no hay publicaciones que tengan la categoría Test1. Traté de agregar hide_empty=false pero no funcionó. Intenté el código en el tema predeterminado de WordPress, y tampoco funcionó. Pero después de intentar usar el parámetro de matriz (sin usar una cadena), funciona. $categorias = get_categories(array( ‘child_of’ => 4, ‘hide_empty’ => false )); print_r($categorías); Gracias por recordarme usar el parámetro hide_empty

    – Permanente

    14 de enero de 2010 a las 2:07


  • hide_empty=false no funciona porque false se ve como una cadena. En su lugar, deberías usar: hide_empty=0

    – agacharse

    1 de marzo de 2013 a las 11:18

los child_of argumento de get_categories especifica la categoría por su ID; suponiendo que haya creado sus categorías en orden, el código get_categories('child_of=2') probablemente esté solicitando las subcategorías de Sub1OfTest1.

Para obtener el ID de una categoría, vaya a Publicaciones → Categorías y haga clic en una categoría. El cat_ID estará en la URL de la página.

  • Gracias por la respuesta. El ID de la categoría Test1 es 2, lo verifiqué pasando el enlace para editar la categoría.

    – Permanente

    11 de enero de 2010 a las 15:39

avatar de usuario
T.Todua

prueba esto también – Mostrar solo subcategorías de wordpress

ese tema también podría ayudar, ya que existen diferentes soluciones para mostrar subcategorías.

//Esta es la codificación para obtener subcategoría y sub-subcategoría

    $args = array
    (
        'number'     => $number,
        'orderby'    => 'title',
        'order'      => 'ASC',
        'hide_empty' => false,
        'include'    => array(11,281,28,51,99,93,33,55,107,20),
        'exclude'    => array(32,29),
    );
    $product_categories = get_terms( 'product_cat', $args );
    // echo '<pre>';
    // print_r($product_categories);
    // echo '</pre>';

    foreach($product_categories as $data):
        if($data->slug = 'cooking')
        {
            $child_arg = array('hide_empty'=>false,'parent'=>$data->term_id,'exclude'=>array(32,29));
        }
        else
        {
            $child_arg = array('hide_empty'=>false,'parent'=>$data->term_id);
        }
        $child_terms = get_terms('product_cat',$child_arg);
        // echo "<pre>";
        // print_r($child_terms);
        // echo "</pre>";
        foreach($child_terms as $data1):
            if($data1->slug = 'cooking')
            {
                $sub_child_arg = array('hide_empty'=>false,'parent'=>$data1->term_id,'exclude'=>array(32,29));
            }
            else
            {
                $sub_child_arg = array('hide_empty'=>false,'parent'=>$data1->term_id);
            }
            $sub_child_terms = get_terms('product_cat',$sub_child_arg);
            // echo "<pre>";
            // print_r($sub_child_terms);
            // echo "</pre>";
        endforeach;
    endforeach; 
?>

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad