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?

Sisir
la source

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
}
Sisir
la source
2
Voir ceci pour plus d’informations: codex.wordpress.org/Function_Reference/get_object_taxonomies
Manny Fleurmond le
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'); 
ajouté
la source
(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>';
  }
}
?>
Reigel
la source
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