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?
Je le ferais de cette façon:
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.