Alle Begriffe einer benutzerdefinierten Taxonomie anzeigen?

18

Ich habe ein paar benutzerdefinierte Taxonomien erstellt und muss ALLE darin enthaltenen Begriffe anzeigen. Was ich bisher erreicht habe, ist die Anzeige der Taxonomien, die in einem benutzerdefinierten Beitragstyp ausgewählt / ausgewählt wurden, aber ich muss sie alle anzeigen, ob sie ausgewählt sind oder nicht . Damit ich später einen Filter erstellen kann, der nach den Begriffen filtert, die ein benutzerdefinierter Beitragstypwert enthält.

<?php 
$args=array(
  'public'   => true,
  '_builtin' => false
);
$output = 'names'; // or objects
$operator = 'and';
$taxonomies=get_taxonomies($args,$output,$operator); 
if  ($taxonomies) {
  foreach ($taxonomies  as $taxonomy ) {
    $terms = get_terms($taxonomy);
        foreach ( $terms as $term) {
?>
        <li><br><a href="#"><input type="checkbox" name="profile[]" value=""><?php echo $term->name; ?> <br/></a></li>
       <?php 
                }
              }
            }  
            ?>

Was ich bisher habe.

Danke im Voraus!

David H
quelle
Wann schlägt dies fehl? Wie viel davon funktioniert so, wie Sie möchten?
s_ha_dum
Das Problem ist, dass ich nur die AUSGEWÄHLTEN Begriffe in einem benutzerdefinierten Beitragstyp anzeigen kann. Ich möchte, dass alle von ihnen zeigen, ob ausgewählt oder nicht. Ich möchte keinen Dummy-Beitragstyp haben, bei dem alles ausgewählt ist, nur um sie zu zeigen.
David H

Antworten:

39

Sie müssen ein zusätzliches Argument an übergeben get_terms(). Standardmäßig werden "leere" Begriffe ausgeblendet - Begriffe, die keinen Beiträgen zugewiesen sind.

$terms = get_terms([
    'taxonomy' => $taxonomy,
    'hide_empty' => false,
]);
s_ha_dum
quelle
Ich danke dir sehr! Aber ich möchte etwas fragen, warum Sie ein Array innerhalb einer Variablen erstellen, anstatt es über der Stelle zu deklarieren, an der das erste Array angezeigt wird.
David H
Einfachheit. Wenn das Argumentarray komplexer wäre, hätte ich es (höchstwahrscheinlich) als erstes deklariert, aber für ein einzelnes Argument ist dies nur der einfachste Weg, dies zu tun. Es sollte so oder so genauso gut funktionieren.
s_ha_dum
Vielen Dank :) das hat mich sehr beschäftigt. Ich weiß das wirklich zu schätzen!
David H
Funktioniert !! Jetzt kann ich sehen, was mit all den Taxonomieoptionen los ist! Einige Plugins erzeugen dort komplexe Strukturen.
eyal_katz
6

Seit 4.5.0 sollten Taxonomien über das Argument 'taxonomy' im Array $ args übergeben werden.

$terms = get_terms( array(
    'taxonomy' => 'post_tag',
    'hide_empty' => false,
) );

Wobei Begriffe ohne Einträge standardmäßig ausgeblendet sind.

Lawrence Oputa
quelle
3

Mit diesem Code werden alle benutzerdefinierten Taxonomien für Kategorien und Unterkategorien abgerufen, wobei Folgendes verwendet wird get_terms():

<?php $wcatTerms = get_terms('product_cat', array('hide_empty' => 0, 'parent' =>0)); 
   foreach($wcatTerms as $wcatTerm) : 
   ?>
<ul>
   <li>
      <a href="<?php echo get_term_link( $wcatTerm->slug, $wcatTerm->taxonomy ); ?>"><?php echo $wcatTerm->name; ?></a>
      <ul class="megaSubCat">
         <?php
            $wsubargs = array(
               'hierarchical' => 1,
               'show_option_none' => '',
               'hide_empty' => 0,
               'parent' => $wcatTerm->term_id,
               'taxonomy' => 'product_cat'
            );
            $wsubcats = get_categories($wsubargs);
            foreach ($wsubcats as $wsc):
            ?>
         <li><a href="<?php echo get_term_link( $wsc->slug, $wsc->taxonomy );?>"><?php echo $wsc->name;?></a></li>
         <?php
            endforeach;
            ?>  
      </ul>
   </li>
</ul>
<?php 
   endforeach; 
   ?>
Amit Gangrade
quelle