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

21 jun 2011, 12:20:04
Vistas: 105K
Votos: 60

¿Cómo puedo obtener las taxonomías de un tipo de entrada?

Si tengo un tipo de entrada event y necesito averiguar la lista de taxonomías que están adjuntas a ese tipo de entrada. ¿Cómo puedo encontrarlas?

0
Todas las respuestas a la pregunta 7
7
53

¡Creo que lo tengo! Después de revisar algunas funciones en el archivo taxonomy.php de WordPress, encontré la función get_object_taxonomies(); que resolvió el problema :)

21 jun 2011 16:06:39
Comentarios

Consulta esto para más información: http://codex.wordpress.org/Function_Reference/get_object_taxonomies

Manny Fleurmond Manny Fleurmond
21 jun 2011 16:15:42

wow... es bueno saber sobre get_object_taxonomies(). Acaba de ayudarme a intervenir template_redirect

helgatheviking helgatheviking
10 nov 2011 05:17:40

Hola, gracias por esto pero ¿cómo ordenarlos por ID en lugar de por NOMBRE?

dh47 dh47
19 oct 2015 10:08:28

la forma más fácil será simplemente ordenarlos usando un bucle for o foreach.

Sisir Sisir
19 oct 2015 12:25:54

Sí, estoy obteniendo los datos usando un bucle foreach pero los estoy ordenando por nombre `$taxonomies = get_object_taxonomies( array( 'post_type' => $post_type ) );

foreach( $taxonomies as $taxonomy ) :

// Obtiene cada "categoría" (término) en esta taxonomía para obtener las publicaciones respectivas
$terms = get_terms( $taxonomy ); ?>

<ul class="specials"><?php foreach( $terms as $term ) : ?>

  <li><h2  ><?php echo $term->name; ?></h2>`
dh47 dh47
19 oct 2015 13:19:44

@dh47 Llego tarde a este hilo, pero si todavía te lo estás preguntando, creo que necesitarías hacer dos bucles foreach: uno para ordenarlos y otro para mostrarlos. También podrías pasarlos a usort antes de tu bucle foreach para ordenarlos como quieras.

phatskat phatskat
7 feb 2019 06:46:33

Aquí hay una línea para mostrar todos los términos para un objeto $post dado (de cualquier tipo de contenido): array_map(function ($taxonomy) use($post) { return wp_get_post_terms($post->ID, $taxonomy); }, get_object_taxonomies($post)) // devuelve un array con todos los $terms bajo cualquier taxonomía

FooBar FooBar
7 oct 2020 22:56:42
Mostrar los 2 comentarios restantes
2

get_categories hará el trabajo.

get_categories('taxonomy=taxonomy_name&type=custom_post_type');
21 jun 2011 14:46:16
Comentarios

(¡Creo que si entendí bien la pregunta!)

addedlovely addedlovely
21 jun 2011 14:46:52

El problema 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 encontrar todas las taxonomías que están vinculadas a él. ¡Gracias de todos modos!

Sisir Sisir
21 jun 2011 15:47:28
2

Disculpas por revivir una publicación antigua, pero me encontré con este problema mientras buscaba una solución para mi caso de uso.

Quería recuperar todas las taxonomías disponibles para un tipo de publicación, y también recuperar todos los términos disponibles por taxonomía.

Agradezco a Nick B por orientarme en la dirección correcta con su respuesta: https://wordpress.stackexchange.com/a/357448/198353

// obtener una lista de taxonomías disponibles para un tipo de publicación
$taxonomies = get_taxonomies(['object_type' => ['tu_tipo_de_publicacion']]);

$taxonomyTerms = [];

// recorrer las taxonomías
foreach ($taxonomies as $taxonomy)
{
  // recuperar todos los términos disponibles, incluyendo aquellos no utilizados aún
  $terms    = get_terms(['taxonomy' => $taxonomy, 'hide_empty' => false]);

  // asegurarse que $terms es un array, ya que puede ser un entero (contador) o un WP_Error
  $hasTerms = is_array($terms) && $terms;

  if($hasTerms)
  {
    $taxonomyTerms[$taxonomy] = $terms;        
  }
}
1 dic 2020 14:24:24
Comentarios

Esto hace que mi sitio web se bloquee

Pete Pete
5 feb 2021 09:35:46

¿En qué sentido este fragmento de código hace que tu sitio web se bloquee? A menos que tengas una cantidad astronómica de taxonomías y términos, es poco probable que sea culpa de este fragmento.

seemly seemly
10 feb 2021 15:21:38
0

Utiliza get_object_taxonomies (https://developer.wordpress.org/reference/functions/get_object_taxonomies/), que acepta como parámetro el nombre de tu tipo de entrada personalizado o un objeto de entrada:

$taxonomies = get_object_taxonomies('custom_post_type');
$taxonomies = get_object_taxonomies($custom_post_object);

get_taxonomies() no devolverá ninguna taxonomía que sea utilizada por múltiples tipos de entradas (https://core.trac.wordpress.org/ticket/27918).

25 feb 2020 22:37:12
2

¿Has probado algo? ¿Algo como esto?

<?php 

$args=array(
  'object_type' => array('evento') 
); 

$output = 'names'; // o objects
$operator = 'and'; // 'and' u 'or'
$taxonomies=get_taxonomies($args,$output,$operator); 
if  ($taxonomies) {
  foreach ($taxonomies  as $taxonomy ) {
    echo '<p>'. $taxonomy. '</p>';
  }
}
?>
21 jun 2011 12:31:25
Comentarios

Revisé la función get_taxonomies(); en el codex pero tiene una documentación muy pobre y no tenía idea de cómo podía pasar los tipos de publicación.

Sisir Sisir
21 jun 2011 12:56:21

Lo siento, este código está devolviendo todas las taxonomías registradas en WordPress.

Sisir Sisir
21 jun 2011 12:59:26
0
$taxonomies = get_taxonomies( [ 'object_type' => [ 'custom_post_type' ] ] );
29 ene 2020 18:13:16
1
11 mar 2021 23:47:41
Comentarios

Esta función recupera todos los nombres de taxonomía para la publicación dada, que no es lo que el OP quiere, pero es exactamente lo que yo estaba buscando, gracias.

frzsombor frzsombor
26 sept 2023 16:45:16