web-dev-qa-db-fra.com

Obtenez toutes les taxonomies pour tous les types de post

J'aimerais obtenir toute la taxonomie disponible pour chaque type de message (personnalisé). Mon objectif est de répertorier pour chaque type de message, chaque taxonomie telle que la catégorie, le tag et pour chacune de ces taxonomies de manière à obtenir tous les termes de registre (et identifiants) avec le nombre d'éléments pour chaque terme, ...

Je voudrais sortir quelque chose comme ça:

post
   Categories
      cat1 (2)
      cat2 (1)
   Tags
      Tag1 (5)
      Tag2 (3)
portfolio
   Attributes
      att1 (2)
      att2 (1)
      att3 (5)
      att4 (9)
   Categories
      cat1 (2)
      cat2 (4)
      cat2 (1)
   Tags
      Tag1 (5)
      Tag2 (3)
....

Je ne sais pas maintenant quelle est la bonne et la meilleure façon de le faire. C'est un peu plus complexe que prévu et je n'ai pas trouvé de solution.

1
freaky

Je suggérerais d'interroger une liste de tous les types d'articles à l'aide de get_post_types. Avec ce tableau, vous pouvez faire une foreach. et pour chaque type de publication, interrogez tous les termes avec get_term. Cela ressemblerait à quelque chose comme cela, mais vous devriez transmettre à get_post_types vos types de publications connus, car, dans sa version actuelle, cela affichera également des éléments tels que les pièces jointes et les menus de navigation.

function agency_wp_test() {
    $post_types = get_post_types(); 

    foreach ( $post_types as $post_type ) {
        $taxonomy_names = get_object_taxonomies( $post_type );

        $terms = get_terms( $taxonomy_names, array( 'hide_empty' => false ));
         if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){
             echo '<h5>'.$post_type.'</h5>';
             echo '<ul>';
             foreach ( $terms as $term ) {
               echo '<li>' . $term->name . '</li>';

            }
            echo '</ul>';
        }
    }
}
3
mrbobbybryant