Exclua uma categoria e suas subcategorias usando WP_LIST_FILTER

Eu preciso excluir uma categoria e suas subcategorias nas postagens. Este é o código no qual estou trabalhando e funciona:

ID, 'category'); $categories = wp_list_filter($categories, array('slug'=>'regione'), 'NOT'); $categories = wp_list_filter($categories, array('slug'=>'lazio'), 'NOT'); $categories = wp_list_filter($categories, array('slug'=>'rm'), 'NOT'); if (!empty($categories)) { ?> 
    <?php foreach ($categories as $category) { $cat = get_category($category); echo '
  • ' . $cat->name . '
  • '; } ?>

Embora, a categoria ‘regione’ tenha mais de 20 subcategores e cada subcat tenha 5 a 10 outros subcats: qualquer sugestão sobre como excluir de forma melhor a categoria principal e seus filhos?

Solutions Collecting From Web of "Exclua uma categoria e suas subcategorias usando WP_LIST_FILTER"

Estou respondendo uma pergunta depois de 6 meses, então espero que a qualidade da minha resposta não seja compatível com os padrões WPSE e, portanto, gostaria de receber comentários de outros gurus da experiência WPSE.

Adicione a seguinte function às suas funções.php

 function filter_category_list_by_slug( $slug, $categories ) { $excluded_parent = get_category_by_slug( $slug ); $excluded_cats = get_categories( array( 'child_of' => $excluded_parent->term_id ) ); $excluded_cats[] = $excluded_parent; $filtered = array(); $matched = false; foreach ($categories as $category ) { $matched = false; foreach( $excluded_cats as $ex_cat ) { if ( $category->term_id == $ex_cat->term_id ) { $matched = true; } } if ( ! $matched ) { $filtered[] = $category; } } return $filtered; } 

E o filtro da categoria como segue:

 $categories = wp_get_post_terms($post->ID, 'category'); $categories = filter_category_list_by_slug( 'regione', $categories ); $categories = filter_category_list_by_slug( 'lazio', $categories ); $categories = filter_category_list_by_slug( 'rm', $categories );