2016-07-25 24 views
0

Ich versuche, eine Schleife zu erstellen, die eine Liste der Kategorien (als Schaltflächen) eines benutzerdefinierten Beitragstyps anzeigt. Ich habe eine Schleife, die funktioniert, aber es durchläuft alle benutzerdefinierten Beiträge und zeigt jede Kategorie an. Wenn ich jetzt zwei Beiträge mit derselben Kategorie habe, wird diese Kategorie zweimal angezeigt. Außerdem muss ich benutzerdefinierte Klassen für meinen Isotopenfilter ausstrahlen, um zu funktionieren.Wordpress-Schleife zeigt doppelte Kategorien

Dies ist mein Code:

  <?php 
      $args = array( 
       'post_type' => 'ondernemers', 
       'posts_per_page' => 10 
       ); 

      $loop = new WP_Query($args); 
      while ($loop->have_posts()) : $loop->the_post(); 

      $categories = get_the_category($post->ID, 'taxonomy'); 
      foreach($categories as $category) { 
       echo '<button class="button" data-filter=".' . $category->slug . ' "><div class="button-img-' . $category->slug . '"></div>' . $category->name . '</button>'; 
      } 

      endwhile; 
      ?> 

Gibt es eine Möglichkeit, die Schleife Druck jede Kategorie nur einmal zu machen, anstatt für jedes Mal, einmal ist es nur für jeden einzelnen Beitrag?

Antwort

1

Verwenden Sie den folgenden Code, um den Kategorienamen eines benutzerdefinierten Beitragstyps abzurufen.

<?php 
    $args = array(
     'type'      => 'post', /* custom post type name */ 
     'parent'     => '', 
     'orderby'     => 'id', 
     'order'     => 'ASC', 
     'hide_empty'    => 1, 
     'hierarchical'    => 1, 
     'taxonomy'     => 'category' /* custom post type texonomy name */ 
    ); 
    $cats = get_categories($args); 
    foreach ($cats as $cat) {   
     $cat_id= $cat->term_id; 
     $cat_name= $cat->name; ?> 
     <h3><?php echo '<a href="' . get_category_link($cat_id) . '">'.$cat->name.'</a>'; ?></h3>  
    <?php } ?> 
1

Sie können dies zum Abrufen der benutzerdefinierten Post-Typ-Taxonomie-Liste versuchen.

<?php 
$categories = get_the_terms($post->ID, 'taxonomy_name'); 
foreach($categories as $category): ?> 
    <button data-filter="<?php echo $category->slug; ?>"> 
    <?php echo $category->name; ?> 
    </button> 
<?php endforeach; ?> 

Ändern Sie nach Bedarf.