What’s going on?
During the first execution, we use
get_terms() to gather all terms that do not have any parents ( parent = 0 ). Then, we loop through those terms, and look for terms whose parent is “this” term. Every time we loop through a set of terms, we look for children that belong to each term. Ultimately, we return an array of terms with nested children terms within the children property.