Cum să obții toate taxonomiile unui tip de postare?
Cum pot obține taxonomiile unui tip de postare?
Dacă am un tip de postare event
și am nevoie să aflu lista taxonomiilor care sunt atașate acestui tip de postare, cum le pot găsi?
Cred că am înțeles! După ce am analizat câteva funcții din fișierul taxonomy.php din WordPress, am găsit funcția get_object_taxonomies();
care a făcut treaba :)

Vezi mai multe informații aici: http://codex.wordpress.org/Function_Reference/get_object_taxonomies

wow... bine de știut despre get_object_taxonomies(). Tocmai m-a ajutat să interceptez template_redirect

Salut, mulțumesc pentru asta, dar cum să le ordonez după ID în loc de NUME?

cea mai ușoară metodă ar fi să le sortezi folosind o buclă for
sau foreach
.

Da, folosesc o buclă foreach pentru a le prelua, dar le obțin ordonate după nume `$taxonomies = get_object_taxonomies( array( 'post_type' => $post_type ) );
foreach( $taxonomies as $taxonomy ) :
// Obține fiecare "categorie" (term) din această taxonomie pentru a obține postările respective
$terms = get_terms( $taxonomy ); ?>
<ul class="specials"><?php foreach( $terms as $term ) : ?>
<li><h2 ><?php echo $term->name; ?></h2>`

@dh47 Sunt cam întârziat la această discuție, dar dacă încă te întrebi, cred că ai nevoie de două bucle foreach
: una pentru a le sorta și una pentru a le afișa. Ai putea de asemenea să le transmiți funcției usort
înaintea buclei foreach
pentru a le sorta după cum dorești.

Iată o linie de cod pentru a afișa toți termenii pentru un obiect $post
dat (orice tip de postare): array_map(function ($taxonomy) use($post) { return wp_get_post_terms($post->ID, $taxonomy); }, get_object_taxonomies($post))
// returnează un array cu toți termenii $terms din orice taxonomie

get_categories va face treaba.
get_categories('taxonomy=taxonomy_name&type=custom_post_type');

Îmi cer scuze pentru că am readus un post vechi, dar am dat peste această problemă în timp ce căutam un răspuns pentru cazul meu de utilizare.
Am vrut să obțin toate taxonomiile disponibile pentru un tip de postare și, de asemenea, să obțin toți termenii disponibili pe taxonomie.
Mulțumesc lui Nick B pentru că m-a îndreptat în direcția corectă cu răspunsul său: https://wordpress.stackexchange.com/a/357448/198353
// obține o listă de taxonomii disponibile pentru un tip de postare
$taxonomies = get_taxonomies(['object_type' => ['your_post_type']]);
$taxonomyTerms = [];
// parcurge taxonomiile
foreach ($taxonomies as $taxonomy)
{
// obține toți termenii disponibili, inclusiv pe cei neutilizați încă
$terms = get_terms(['taxonomy' => $taxonomy, 'hide_empty' => false]);
// asigură-te că $terms este un array, deoarece poate fi un int (count) sau un WP_Error
$hasTerms = is_array($terms) && $terms;
if($hasTerms)
{
$taxonomyTerms[$taxonomy] = $terms;
}
}

Folosește get_object_taxonomies
(https://developer.wordpress.org/reference/functions/get_object_taxonomies/), care acceptă fie numele tipului tău de postare personalizată, fie un obiect de postare ca parametru:
$taxonomies = get_object_taxonomies('custom_post_type');
$taxonomies = get_object_taxonomies($custom_post_object);
get_taxonomies()
nu va returna nicio taxonomie care este folosită de mai multe tipuri de postări (https://core.trac.wordpress.org/ticket/27918).

Ai încercat ceva? ceva de genul acesta?
<?php
$args=array(
'object_type' => array('event')
);
$output = 'names'; // sau objects
$operator = 'and'; // 'and' sau 'or'
$taxonomies=get_taxonomies($args,$output,$operator);
if ($taxonomies) {
foreach ($taxonomies as $taxonomy ) {
echo '<p>'. $taxonomy. '</p>';
}
}
?>

get_post_taxonomies()
https://developer.wordpress.org/reference/functions/get_post_taxonomies/
Aceasta a funcționat pentru mine.
