Cum să obții toate taxonomiile unui tip de postare?

21 iun. 2011, 12:20:04
Vizualizări: 105K
Voturi: 60

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?

0
Toate răspunsurile la întrebare 7
7
53

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 :)

21 iun. 2011 16:06:39
Comentarii

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

Manny Fleurmond Manny Fleurmond
21 iun. 2011 16:15:42

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

helgatheviking helgatheviking
10 nov. 2011 05:17:40

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

dh47 dh47
19 oct. 2015 10:08:28

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

Sisir Sisir
19 oct. 2015 12:25:54

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 dh47
19 oct. 2015 13:19:44

@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.

phatskat phatskat
7 feb. 2019 06:46:33

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

FooBar FooBar
7 oct. 2020 22:56:42
Arată celelalte 2 comentarii
2

get_categories va face treaba.

get_categories('taxonomy=taxonomy_name&type=custom_post_type'); 
21 iun. 2011 14:46:16
Comentarii

(Cred că dacă am înțeles corect întrebarea!)

addedlovely addedlovely
21 iun. 2011 14:46:52

Problema este că nu am niciun nume de taxonomie, asta încerc să aflu. Am doar numele tipului de post. Prin numele tipului de post vreau să aflu toate taxonomiile atașate la el. Mulțumesc oricum!

Sisir Sisir
21 iun. 2011 15:47:28
2

Î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;        
  }
}
1 dec. 2020 14:24:24
Comentarii

Acest cod îmi blochează site-ul

Pete Pete
5 feb. 2021 09:35:46

În ce sens îți blochează site-ul acest fragment de cod? Dacă nu ai o cantitate astronomică de taxonomii și termeni, este puțin probabil să fie vina acestui fragment.

seemly seemly
10 feb. 2021 15:21:38
0

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).

25 feb. 2020 22:37:12
2

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>';
  }
}
?>
21 iun. 2011 12:31:25
Comentarii

Am verificat funcția get_taxonomies(); în codex dar are documentație foarte slabă și nu am avut nicio idee cum pot trece tipurile de postări.

Sisir Sisir
21 iun. 2011 12:56:21

Scuze, acest cod returnează toate taxonomiile înregistrate în WordPress.

Sisir Sisir
21 iun. 2011 12:59:26
0
// Obține toate taxonomiile asociate cu un tip personalizat de postare
$taxonomies = get_taxonomies( [ 'object_type' => [ 'custom_post_type' ] ] );
29 ian. 2020 18:13:16
1
get_post_taxonomies()

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

Aceasta a funcționat pentru mine.

11 mar. 2021 23:47:41
Comentarii

Această funcție preia toate numele de taxonomii pentru postarea dată, ceea ce nu este ceea ce dorea OP, dar este exact ceea ce căutam eu, mulțumesc.

frzsombor frzsombor
26 sept. 2023 16:45:16