Benutzerdefinierte Taxonomie-Vorlagenschleife

Ich weiß, dass diese Frage oft gestellt wird, aber ich finde keine Antwort, die mir passt.

Nun, ich habe einige benutzerdefinierte Post-Typen und einige benutzerdefinierte Taxonomien gemacht. Ich habe den benutzerdefinierten Posttyp Produkte und verknüpft mit ihm die Taxonomie Produktkategorien . Wenn der Benutzer auf der Produktseite ist und auf eine Produktkategorie klickt, möchte ich ihm alle Produkte dieser bestimmten Kategorie zeigen.

Das Problem ist, dass die Produktkategorien ungefähr 50 sein werden. Im Moment ist das Einzige, was ich gefunden habe, dies in den WordPress-Loop zu bringen

 'all_products', 'posts_per_page' => 12, 'products' => 'advance' ) ); ?> 

Aber das zeigt die Beiträge nur für die Fortschrittskategorie. Ich brauche einen Weg, um automatisch die Kategorie zu wählen, auf die der Benutzer geklickt hat. Der schmutzige Weg besteht darin, 50 Taxonomie- {slug} .php- Dateien zu erstellen. Aber ich will den sauberen Weg. Und ich kann es nicht finden.

Ich lese den gesamten Codex über die Template-Hierarchie und speziell für die benutzerdefinierten Taxonomien, und suche den halben Stackexchange aber nichts (vielleicht habe ich etwas verpasst: P).

Ich habe versucht, meine Frage so klar wie möglich zu beschreiben. Wenn Sie etwas nicht verstehen können, sagen Sie es mir einfach und ich werde versuchen, die Frage mit weiteren Informationen zu aktualisieren.

Vielen Dank

Solutions Collecting From Web of "Benutzerdefinierte Taxonomie-Vorlagenschleife"

Die Art, wie ich Ihnen die Frage vorlese, ist, dass Sie 12 Beiträge pro Seite in dieser Taxonomie benötigen, unabhängig davon, welcher Begriff gerade angezeigt wird.

Dies kann leicht mit pre_get_posts geschehen. Sie sollten die Hauptabfrage für eine benutzerdefinierte Abfrage auf Archivseiten niemals ändern. Lesen Sie diese Antwort, die ich kürzlich zu diesem Thema gemacht habe.

Verwenden Sie die Bedingung is_tax() , um auf die Taxonomieseite zu is_tax() und die Parameter is_tax()

Fügen Sie dies zu functions.php hinzu. Sie können auch nur eine taxonomy.php für alle Begriffe verwenden, keine 50 anderen

 function custom_ppp( $query ) { if ( !is_admin() && $query->is_tax() && $query->is_main_query() ) { $query->set( 'posts_per_page', '12' ); } } add_action( 'pre_get_posts', 'custom_ppp' ); 

BEARBEITEN

Ändere dies in taxonomy.php

 < ?php $loop = new WP_Query( array( 'post_type' => 'all_products', 'pre_get_posts' => 12, 'products' => 'advance' ) ); ?> < ?php while ( $loop->have_posts() ) : $loop->the_post(); ?> //content < ?php endwhile; ?> 

zurück zu genau diesem

 < ?php while ( have_posts() ) : the_post(); ?> //content < ?php endwhile; ?> 

Was Sie beschreiben, steht in einem engen Zusammenhang mit “Facettensuche”, aber Sie suchen nicht wirklich. 🙂

Kurz gesagt, Sie müssten:

  1. Informationen über die “ausgewählte” Taxonomie an die Seite übermitteln, dies kann mit der GET-Abfrage oder dem neu geschriebenen Endpunkt geschehen
  2. Erzeugen Sie Links (oder welche Schnittstelle auch immer Sie haben) entsprechend
  3. Passen Sie die Hauptabfrage (!) Der Seite über pre_get_posts , pre_get_posts die Abfragen in der Vorlage ändern

Dies ist, was ich für die benutzerdefinierte Post-Typ health und benutzerdefinierte Taxonomie health-category auch die Seitennummerierung korrigiert.

 < ?php $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1; $q = new WP_Query([ 'post_type' => 'product', 'posts_per_page' => get_option('posts_per_page'), get_query_var( 'taxonomy' ) => get_query_var( 'term' ), 'paged' => $paged ]); $temp_query = $wp_query; $wp_query = null; $wp_query = $q; if ( $q->have_posts() ) : while ( $q->have_posts() ) : $q->the_post(); // post content goes here.. endwhile; endif; // Reset postdata wp_reset_postdata(); // pagination goes here.. // Reset main query object $wp_query = NULL; $wp_query = $temp_query; ?>