Bagaimana cara mendapatkan semua taksonomi dari jenis tulisan?

45

Bagaimana saya bisa mendapatkan taksonomi jenis posting?

Jika saya memiliki jenis posting eventdan saya perlu mencari tahu daftar taksonomi yang dilampirkan ke jenis posting itu. Bagaimana saya menemukan mereka?

Sisir
sumber

Jawaban:

36

Hai teman-teman, saya pikir saya mengerti! Setelah melihat beberapa fungsi dalam file taxonomy.php di WordPress saya telah menemukan fungsi ini get_object_taxonomies();yang melakukan trik :)

Inilah fungsinya

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
sumber
2
Lihat ini untuk info lebih lanjut: codex.wordpress.org/Function_Reference/get_object_taxonomies
Manny Fleurmond
wow ... senang mengetahui tentang get_object_taxonomies (). itu hanya membantu saya membajak template_redirect
helgatheviking
Hai terima kasih untuk ini, tetapi bagaimana cara memesannya dengan ID, bukan NAME?
Dh47
Cara termudah adalah dengan mengurutkannya menggunakan a foratau foreachloop.
Sisir
Ya saya mengambil menggunakan foreach loop tetapi saya mendapatkan pesanan dengan nama$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 akan melakukan pekerjaan itu.

get_categories('taxonomy=taxonomy_name&type=custom_post_type'); 
tambah meriah
sumber
(Saya pikir jika saya mengerti pertanyaannya dengan benar!)
addlovely
3
Masalahnya saya tidak memiliki nama taksonomi, itulah yang ingin saya cari tahu. Saya hanya memiliki nama jenis posting. Dengan nama tipe posting saya ingin mengetahui semua taksonomi yang terlampir padanya. Bagaimanapun, terima kasih!
Sisir
1

Sudahkah Anda mencoba sesuatu? sesuatu seperti ini?

<?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
sumber
1
Tampak pada get_taxonomies();fungsi pada codex tetapi memiliki dokumentasi yang sangat buruk dan tidak tahu bagaimana saya bisa melewati tipe posting.
Sisir
Maaf, kode ini mengembalikan semua taksonomi terdaftar di wordpress.
Sisir