Como obter todas as taxonomias de um tipo de postagem?

45

Como posso obter taxonomias de um tipo de postagem?

Se eu tiver um tipo de postagem evente precisar descobrir a lista de taxonomias anexadas a esse tipo de postagem. Como os encontro?

Sisir
fonte

Respostas:

36

Ei pessoal, acho que entendi! Depois de analisar algumas funções no arquivo taxonomy.php no WordPress, encontrei esta função get_object_taxonomies();que fez o truque :)

Aqui está a função

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
fonte
2
Veja este para mais informações: codex.wordpress.org/Function_Reference/get_object_taxonomies
Manny Fleurmond
uau ... bom saber sobre get_object_taxonomies (). ele só me ajudou hijack template_redirect
helgatheviking
Olá, obrigado por isso, mas como solicitá-los por ID em vez de NAME?
Dh47 19/10/2015
A maneira mais fácil será classificá-las usando um loop forou foreach.
Sisir 19/10/2015
Sim, eu estou buscando usando loop foreach mas estou recebendo ordem pelo nome$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 fará o trabalho.

get_categories('taxonomy=taxonomy_name&type=custom_post_type'); 
addedlovely
fonte
(Eu acho que se eu entendi o direito pergunta!)
addedlovely
3
O problema é que eu não tenho nenhum nome de taxonomia, é isso que eu quero descobrir. Eu só tenho o nome do tipo de postagem. Pelo nome do tipo de postagem, quero descobrir toda a taxonomia anexada a ele. Obrigado mesmo assim!
Sisir
1

Você já tentou alguma coisa? algo assim?

<?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
fonte
1
Observava a get_taxonomies();função no codex, mas tinha uma documentação muito ruim e não fazia ideia de como posso passar os tipos de post.
precisa saber é o seguinte
Desculpe, este código está retornando todas as taxonomias registradas no wordpress.
Sisir