¿Cómo obtener todas las taxonomías de un tipo de publicación?

46

¿Como puedo obtener taxonomías de un tipo de publicación?

Si tengo un tipo de publicación eventy necesito encontrar la lista de taxonomías que se adjuntan a ese tipo de publicación. ¿Cómo los encuentro?

Sisir
fuente

Respuestas:

36

Hola chicos, creo que lo tengo! Después de mirar un par de funciones en el archivo taxonomy.php en WordPress, encontré esta función get_object_taxonomies();que funcionó :)

Aquí esta la función

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
fuente
2
Consulte esto para obtener más información: codex.wordpress.org/Function_Reference/get_object_taxonomies
Manny Fleurmond
wow ... es bueno saber acerca de get_object_taxonomies (). simplemente me ayudó a secuestrar template_redirect
helgatheviking
Hola, gracias por esto, pero ¿cómo ordenarlos por ID en lugar de NAME?
dh47
la forma más fácil será simplemente ordenarlos usando un bucle foro foreach.
Sisir
Sí, estoy obteniendo el uso del bucle foreach pero $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>
obtengo el
9

get_categories hará el trabajo.

get_categories('taxonomy=taxonomy_name&type=custom_post_type'); 
agregado amorosamente
fuente
(¡Creo que si entendí bien la pregunta!)
agregué amablemente el
3
La cosa es que no tengo ningún nombre de taxonomía, eso es lo que quiero averiguar. Solo tengo el nombre del tipo de publicación. Por el nombre del tipo de publicación, quiero averiguar todas las taxonomías que están unidas a ella. ¡Gracias de cualquier manera!
Sisir
1

¿Has intentado algo? ¿algo como esto?

<?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
fuente
1
Analicé la get_taxonomies();función en el códice, pero tiene una documentación muy pobre y no tenía idea de cómo puedo pasar los tipos de publicación.
Sisir
Lo sentimos, este código devuelve todas las taxonomías registradas en WordPress.
Sisir