it-swarm.com.de

Archivvorlage für Taxonomiebegriffe

Ich habe einen benutzerdefinierten Beitragstyp [equipment] registriert und habe eine Taxonomie von [equipment_type] innerhalb der Taxonomie, die ich übergeordnete und untergeordnete Kategorien habe. Zum Beispiel:

Ausrüstung (Kundenspezifischer Beitragstyp)

Ausrüstungsarten (Taxonomie)

Kameras (Oberbegriff)

  • Kamera A (Kinderkurs)

  • Kamera B

Was ich erstellen möchte, ist effektiv eine Archivseite für die Taxonomiebegriffe. Wenn also entweder "Kameras" oder "Kamera A" ausgewählt ist, werden beispielsweise 12 Posts mit Titel und Bild (Links zu einzelnen Posts) sowie einige Seitenumbrüche angezeigt.

Ich habe versucht, eine Standard-Abfrage WP und eine Standard-Schleife auszuführen, und es werden immer alle Taxonomie-Beiträge in allen Begriffen angezeigt.

Ich habe derzeit eine taxonomy-equipment_types.php-Vorlage eingerichtet, um die Abfrage zu verarbeiten.

3
user1833715

Ich möchte dies dokumentieren, weil ich kürzlich die Antwort gefunden habe.

Das Problem mit Taxonomie ist, dass die meisten Entwickler die Einstellung erwarten , dass die Taxonomie in der post_type url von:

http://hostname/post_type/taxonomy_term

Stattdessen finden Sie die URL in:

http://hostname/taxonomy_slug/taxonomy_term

Dies bedeutet, dass wir die Vorlage häufig korrekt erstellen as

taxonomy-taxonomy_slug-taxonomy_term.php

Aber die richtige Art, es zu benutzen, ist es, es in der URL zu erwarten

http://hostname/taxonomy_slug/taxonomy_term

Um die richtige URL für die Taxonomie anzuzeigen, können wir verwenden

get_the_term_list($post->ID,'taxonomy_slug')

Und testen Sie, wohin der Link führen soll.

3
Franz Noel

Ich hatte ein ähnliches Problem. Das Problem mit den obigen Antworten ist, dass Sie alle die CPT, die Taxonomie oder den Begriff angeben müssen.

Wenn Sie dies - wie Sie angegeben haben - dynamisch abrufen möchten, je nachdem, auf welcher CPT-Seite sich der Benutzer befindet, können Sie Folgendes ausprobieren (was für mich funktioniert): Es werden alle Taxonomien für den aktuellen benutzerdefinierten Beitragstyp angezeigt.

( ursprünglich aus diesem Beitrag mit Hilfe von GhostToast )

 <?php get_header(); ?>
  <div id="content">
<div id="main">

  <ul>

<? // Start taxonomy term archives query
$post_type = get_post_type(); // find out CPT name
$taxonomies = get_object_taxonomies($post_type); // Find taxonomies
if($taxonomies){
foreach($taxonomies as $taxonomy){
// only want hierarchial -- no tags please
if(is_taxonomy_hierarchical($taxonomy)){

    $terms = get_terms($taxonomy, array(
'orderby'       => 'name', 
'order'         => 'Asc',
'hide_empty'    => true )); 

 foreach ( $terms as $term ) {  


// example output below ?>

<li>

 <h1><a href="<?php echo get_term_link($term->slug, $taxonomy); ?> "><? echo $term->name; ?></a></h1>

   <div class="imgBox">

     <a href="<?php echo get_term_link($term->slug, $taxonomy); ?> " title="<? echo $term->name; ?>" >
     <img src="<?php echo get_template_directory_uri(); ?>/timthumb.php?src=/library/images/dingy-placeholder.png&amp;h=196&amp;w=285&amp;zc=1" alt="<?php the_title(); ?>" /></a>
   </div>

           <div class="the-excerpt">
            <a href="<?php echo get_term_link($term->slug, $taxonomy); ?> "><? echo $term->description; //you can add this in admin ?> - click to view more</a>
            </div>
 </li>
        <?  

   }
 }
}
}?>

     </ul>


<?php wp_reset_query(); ?>

     </div> <!-- end #main -->
   </div> <!-- end #content -->

 <?php get_footer(); ?>

Speichern Sie das obige in einer Datei mit dem Namen archive-mycpt.php und fügen Sie es nach dem Header-Aufruf in archive.php ein.

<?php get_header(); ?>

<?php  // is this one of our CPT ? If so, direct to custom archive page 
  if ( is_custom_post_type() ){ 
include (TEMPLATEPATH . '/archive-mycpt.php'); 

        // if not continue...

    } else {  ?>

               <!-- archive.php content   -->

   <? } ?>
0
Sol