Jak uzyskać wszystkie taksonomie typu post?


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
}


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'); 

(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>';
  }
}
?>

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.