Obtenga solo las categorías de nivel superior usando get_categories () sin foreach loop

Pregunta:

Pregunta muy simple: aquí está mi código get_categories() :

<?php $args = array(
    'show_option_all'   => '',
    'show_option_none'  => '',
    'orderby'           => 'ID',
    'order'             => 'ASC',
    'show_count'        => 0,
    'hide_empty'        => 0,
    'exclude'           => '1',
    'hierarchical'      => 0,
    'depth'             => 1,
    'number'            => 12
    );
?>

<?php $categories = get_categories( $args ); ?>

<div class="middle-left">
    <ul>
        <?php for( $i=0; $i<4; $i++ ) {
            echo "<li>" . $categories[$i]->{'name'} . "</li>";
        } ?>
    </ul>
</div>
<div class="middle-middle">
    <ul>
        <?php for( $i=4; $i<8; $i++ ) {
            echo "<li>" . $categories[$i]->{'name'} . "</li>";
        } ?>
    </ul>
</div>
<div class="middle-right">
    <ul>
        <?php for( $i=8; $i<12; $i++ ) {
            echo "<li>" . $categories[$i]->{'name'} . "</li>";
        } ?>
    </ul>
</div>

Después de una larga búsqueda, descubrí cómo ingresar al objeto stdClass sin foreach loop y quiero continuar de esta manera. Pero solo quiero las categorías de nivel superior, no subgatos.

¿Cómo puedo modificar el argumento aquí?

Respuesta:

Utilice get_terms con un argumento parent . De la página del Codex para esa función, el énfasis es mío:

parent (integer) Obtiene los hijos directos de este término (solo términos cuyo padre explícito es este valor). Si se pasa 0, solo se devuelven los términos de nivel superior. El valor predeterminado es una cadena vacía.

No probado, pero debería hacerlo.

$categories = get_terms( 
   'category', 
   array('parent' => 0)
);

Por supuesto, debe agregar cualquier otro argumento que necesite.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım