web-dev-qa-db-fra.com

Comment obtenir la profondeur des sous-catégories d'une catégorie

Je cherche à obtenir la profondeur des sous-catégories d'une catégorie.

Supposons que j'ai une catégorie "grand-parent" qui comporte une sous-catégorie "parent", qui à son tour comporte une sous-catégorie "enfant". Comment puis-je arriver à l'entier 2?

Je suppose que je pourrais vérifier si "grand-parent" a des sous-catégories et si c'est le cas, vérifiez s'ils ont des sous-catégories, etc., jusqu'à atteindre 0. Mais cela semble être un traitement inutile.

N'y a-t-il pas un moyen plus élégant?

2
pdme

Je le ferais de cette façon:

  • obtenir les sous-catégoriesall(inclure les vides, les hiérarchiser) en tant que tableau
  • récupérer la profondeur du tableau dans PHP (cette partie est prise (mais adaptée) à partir d'ici )

Au total, il s’agit du code suivant, qui est intégré à une fonction, mais qui pourrait bien sûr être utilisé directement quelque part dans un fichier de modèle:

function get_category_depth($id = 0) {
    $args = array(
        'child_of' => $id,
        'hide_empty' => 0,
        'hierarchical' => 1,
    );
    $categories = get_categories($args)

    if (empty($categories))
        return 0;

    $depth = 1;
    $lines = explode("\n", print_r($categories, true));

    foreach ($lines as $line)
        $depth = max(
            $depth,
            (strlen($line) - strlen(ltrim($line))) / 4
        );

    return ceil(($depth - 1) / 2) + 1;
} // function get_category_depth

Veuillez noter que je n'ai pas testé cela.

1
tfrommen