Comment obtenir toutes les taxonomies d'un type de poste?


46

Comment puis-je obtenir des taxonomies de type post?

Si j'ai un type de message eventet que je dois trouver la liste des taxonomies attachées à ce type de message. Comment puis-je les trouver?

Réponses:


36

Hé les gars, je pense que je l'ai eu! Après avoir examiné quelques fonctions dans le fichier taxonomy.php dans WordPress, j'ai trouvé cette fonction get_object_taxonomies();qui a fait l'affaire :)

Voici la fonction

function get_post_taxonomies($post) {
    // Passing an object
    // Why another var?? $output = 'objects'; // name / objects
    $taxonomies = get_object_taxonomies($post, 'objects');

    /*// Passing a string using get_post_type: return (string) post, page, custom...
    $post_type  = get_post_type($post);
    $taxonomies = get_object_taxonomies($post_type, 'objects');*/

    /*// In the loop with the ID
    $theID      = get_the_ID();
    $post_type  = get_post_type($theID);
    $taxonomies = get_object_taxonomies($post_type, 'objects');*/

    // You can also use the global $post

    // edited to fix previous error $taxonomies
    // edited to force type hinting array
    return (array) $taxonomies; // returning array of taxonomies
}


wow ... bon à savoir sur get_object_taxonomies (). ça m'a aidé à détourner template_redirect
helgatheviking

Bonjour, merci pour cela, mais comment les commander par ID au lieu de NOM?
47

Le moyen le plus simple consiste simplement à les trier en utilisant une boucle forou foreach.
Sisir

Oui, je vais chercher avec une boucle foreach mais je reçois ordre par nom$taxonomies = get_object_taxonomies( array( 'post_type' => $post_type ) ); foreach( $taxonomies as $taxonomy ) : // Gets every "category" (term) in this taxonomy to get the respective posts $terms = get_terms( $taxonomy ); ?> <ul class="specials"><?php foreach( $terms as $term ) : ?> <li><h2 ><?php echo $term->name; ?></h2>
dh47

9

get_categories fera le travail.

get_categories('taxonomy=taxonomy_name&type=custom_post_type'); 

(Je pense que si j'ai bien compris la question!)
ajoutélovely

3
Le fait est que je n'ai pas de nom de taxonomie, c'est ce que je veux savoir. Je n'ai que le nom du type de message. Par le type de poste, je souhaite connaître toutes les taxonomies qui y sont attachées. Merci quand même!
Sisir

1

Avez-vous essayé quelque chose? quelque chose comme ça?

<?php 

$args=array(
  'object_type' => array('event') 
); 

$output = 'names'; // or objects
$operator = 'and'; // 'and' or 'or'
$taxonomies=get_taxonomies($args,$output,$operator); 
if  ($taxonomies) {
  foreach ($taxonomies  as $taxonomy ) {
    echo '<p>'. $taxonomy. '</p>';
  }
}
?>

1
Regardé la get_taxonomies();fonction sur le codex, mais il a très peu de documentation et ne savait pas comment je peux passer les types de post.
Sisir

Désolé, ce code renvoie toutes les taxonomies enregistrées dans wordpress.
Sisir
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.