it-swarm.com.de

Abrufen eines mehrdimensionalen Arrays, das die Kategoriehierarchie widerspiegelt

Der Titel sagt so ziemlich alles. Wie ist es möglich, ein mehrdimensionales PHP Array von WordPress-Kategorien zu erhalten, das die angegebene Kategoriehierarchie widerspiegelt?.

1
GDY

Hier ist also eine Funktion, die genau wie WordPress get_categories verwendet werden kann, aber ein hierarchisches Array zurückgibt. Zu diesem Zweck wird jedem child_categories-Objekt eine WP_TERM -Eigenschaft hinzugefügt:

function get_categories_hierarchical( $args = array() ) {

    if( !isset( $args[ 'parent' ] ) ) $args[ 'parent' ] = 0;

    $categories = get_categories( $args );

    foreach( $categories as $key => $category ):

        $args[ 'parent' ] = $category->term_id;

        $categories[ $key ]->child_categories = get_categories_hierarchical( $args );

    endforeach;

    return $categories;

}

Diese Funktion kann zum Beispiel wie folgt verwendet werden (um eine Reihe von HTML-Auswahleingaben aus den ersten beiden Ebenen der Kategoriehierarchie zu erstellen):

<?php if( $categories = get_categories_hierarchical() ): foreach( $categories as $category ): ?>

    <label for="filter_cat_<?php echo $category->term_id; ?>"><?php echo $category->name; ?></label>

    <select name="filter_cat_<?php echo $category->term_id; ?>" id="filter_cat_<?php echo $category->term_id; ?>">

        <?php if( $category->child_categories ) foreach( $category->child_categories as $subcategory ): ?>

            <option value="<?php echo $subcategory->term_id; ?>"<?php if( $_GET[ 'filter_cat_' . $category->term_id ] == $subcategory->term_id ) echo ' selected'; ?>><?php echo $subcategory->name; ?></option>

        <?php endforeach; ?>

    </select>

<?php endforeach; endif; ?>

Schauen Sie sich auch wp_dropdown_categories und wp_list_categories an, die möglicherweise bereits das tun, was Sie benötigen, ohne eine zusätzliche Funktion zu benötigen.

2
GDY