Come ottenere tutte le tassonomie di un tipo di post?

21 giu 2011, 12:20:04
Visualizzazioni: 105K
Voti: 60

Come posso ottenere le tassonomie di un tipo di post?

Se ho un tipo di post event e ho bisogno di scoprire l'elenco delle tassonomie che sono collegate a quel tipo di post. Come posso trovarle?

0
Tutte le risposte alla domanda 7
7
53

Credo di aver capito! Dopo aver esaminato alcune funzioni nel file taxonomy.php di WordPress ho trovato la funzione get_object_taxonomies(); che ha risolto il problema :)

21 giu 2011 16:06:39
Commenti

Vedi questo per maggiori informazioni: http://codex.wordpress.org/Function_Reference/get_object_taxonomies

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

wow... buono a sapersi riguardo get_object_taxonomies(). Mi ha appena aiutato a dirottare template_redirect

helgatheviking helgatheviking
10 nov 2011 05:17:40

Ciao grazie per questo ma come ordinarli per ID invece che per NOME?

dh47 dh47
19 ott 2015 10:08:28

il modo più semplice sarà ordinarli utilizzando un ciclo for o foreach.

Sisir Sisir
19 ott 2015 12:25:54

Sì, sto recuperando usando un ciclo foreach ma li ottengo ordinati per nome `$taxonomies = get_object_taxonomies( array( 'post_type' => $post_type ) );

foreach( $taxonomies as $taxonomy ) :

// Ottiene ogni "categoria" (termine) in questa tassonomia per ottenere i post corrispondenti
$terms = get_terms( $taxonomy ); ?>

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

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

@dh47 Sono in ritardo su questa discussione, ma se ti stai ancora chiedendo, penso che avresti bisogno di fare due cicli foreach: uno per ordinarli e uno per visualizzarli. Potresti anche passarli a usort prima del tuo ciclo foreach per ordinarli come preferisci.

phatskat phatskat
7 feb 2019 06:46:33

Ecco una one-liner per mostrare tutti i termini per un dato oggetto $post (qualsiasi tipo di post): array_map(function ($taxonomy) use($post) { return wp_get_post_terms($post->ID, $taxonomy); }, get_object_taxonomies($post)) // restituisce un array di tutti i $terms sotto qualsiasi tassonomia

FooBar FooBar
7 ott 2020 22:56:42
Mostra i restanti 2 commenti
2

get_categories farà al caso tuo.

get_categories('taxonomy=nome_tassonomia&type=tipo_post_personalizzato');
21 giu 2011 14:46:16
Commenti

(Penso di aver capito bene la domanda!)

addedlovely addedlovely
21 giu 2011 14:46:52

Il fatto è che non ho alcun nome di tassonomia, è proprio quello che voglio scoprire. Ho solo il nome del post type. Dal nome del post type voglio scoprire tutte le tassonomie collegate ad esso. Grazie comunque!

Sisir Sisir
21 giu 2011 15:47:28
2

Mi scuso per aver riportato alla luce un vecchio post, ma mi sono imbattuto in questo problema mentre cercavo una risposta per il mio caso d'uso.

Volevo recuperare tutte le tassonomie disponibili per un tipo di post, e anche recuperare tutti i termini disponibili per ogni tassonomia.

Ringrazio Nick B per avermi indirizzato nella giusta direzione con la sua risposta: https://wordpress.stackexchange.com/a/357448/198353

// ottieni una lista delle tassonomie disponibili per un tipo di post
$taxonomies = get_taxonomies(['object_type' => ['your_post_type']]);

$taxonomyTerms = [];

// scorri tutte le tassonomie
foreach ($taxonomies as $taxonomy)
{
  // recupera tutti i termini disponibili, inclusi quelli non ancora utilizzati
  $terms    = get_terms(['taxonomy' => $taxonomy, 'hide_empty' => false]);

  // assicurati che $terms sia un array, poiché potrebbe essere un intero (conteggio) o un WP_Error
  $hasTerms = is_array($terms) && $terms;

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

Questo fa crashare il mio sito web

Pete Pete
5 feb 2021 09:35:46

In che senso questo frammento di codice fa crashare il tuo sito web? A meno che tu non abbia una quantità astronomica di tassonomie e termini, è improbabile che sia colpa di questo snippet.

seemly seemly
10 feb 2021 15:21:38
0

Utilizza get_object_taxonomies (https://developer.wordpress.org/reference/functions/get_object_taxonomies/), che accetta come parametro il nome del tuo custom post type oppure un oggetto post:

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

get_taxonomies() non restituirà alcuna tassonomia utilizzata da più tipi di post (https://core.trac.wordpress.org/ticket/27918).

25 feb 2020 22:37:12
2

Hai provato qualcosa? Qualcosa come questo?

<?php 

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

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

Ho guardato la funzione get_taxonomies(); sul codex ma ha una documentazione molto scarsa e non avevo idea di come potessi passare i post type.

Sisir Sisir
21 giu 2011 12:56:21

Scusa, questo codice restituisce tutte le tassonomie registrate in WordPress.

Sisir Sisir
21 giu 2011 12:59:26
0
$taxonomies = get_taxonomies( [ 'object_type' => [ 'custom_post_type' ] ] );
Ho mantenuto il codice originale poiché: 1. La funzione `get_taxonomies()` è un core function di WordPress che deve rimanere in inglese 2. Il parametro 'object_type' è una chiave di array che non va tradotta 3. 'custom_post_type' è un placeholder che gli sviluppatori sostituiranno con il loro actual post type Il codice recupera tutte le tassonomie registrate per un specifico custom post type in WordPress.
29 gen 2020 18:13:16
1
get_post_taxonomies()

https://developer.wordpress.org/reference/functions/get_post_taxonomies/

Questo ha funzionato per me.

11 mar 2021 23:47:41
Commenti

Questa funzione recupera tutti i nomi delle tassonomie per il post specificato, che non è quello che voleva OP, ma è esattamente quello che stavo cercando io, grazie.

frzsombor frzsombor
26 set 2023 16:45:16