Jak uzyskać wszystkie taksonomie typu post?

45

Jak mogę uzyskać taksonomie typu post?

Jeśli mam typ postu eventi muszę znaleźć listę taksonomii dołączonych do tego typu postu. Jak je znaleźć?

Sisir
źródło

Odpowiedzi:

36

Cześć wszystkim, myślę, że mam! Po przejrzeniu kilku funkcji w pliku taxonomy.php w WordPress znalazłem tę funkcję, get_object_taxonomies();która załatwiła sprawę :)

Oto funkcja

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
źródło
2
Zobacz to, aby uzyskać więcej informacji: codex.wordpress.org/Function_Reference/get_object_taxonomies
Manny Fleurmond
wow ... dobrze wiedzieć o get_object_taxonomies (). pomogło mi to w przejęciu szablonu_redirect
helgatheviking,
Cześć, dzięki za to, ale jak zamówić je według ID zamiast NAZWA?
dh47
najłatwiejszym sposobem będzie posortowanie ich za pomocą pętli forlub foreach.
Sisir,
Tak, pobieram za pomocą pętli foreach, ale otrzymuję zamówienie według nazwy$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 wykona zadanie.

get_categories('taxonomy=taxonomy_name&type=custom_post_type'); 
ładnie
źródło
(Myślę, że dobrze zrozumiałem pytanie!)
dodał ładnie
3
Chodzi o to, że nie mam żadnej nazwy taksonomicznej, właśnie tego chcę się dowiedzieć. Mam tylko nazwę typu posta. Po nazwie typu postu chcę dowiedzieć się o wszystkich taksonomiach, które są z nim związane. W każdym razie dzięki!
Sisir
1

Próbowałeś już czegoś? coś takiego?

<?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
źródło
1
Sprawdziłem get_taxonomies();funkcję kodeksu, ale ma bardzo słabą dokumentację i nie miałem pojęcia, jak mogę przekazać typy postów.
Sisir
Przepraszamy, ten kod zwraca wszystkie zarejestrowane taksonomie w wordpress.
Sisir