Taxonomie Struktur Hilfe

Ich habe mich eine Zeit lang mit Taxonomien und Post-Typen herumgeschlagen und könnte wirklich helfen, zu verstehen, was die beste Umsetzung für meine Situation wäre.

Schau mal hier: http://shaulzofef.com/netivyah/resources/audio-lessons/

Ich habe ein paar Post-Typen eingerichtet; Bücher, Zeitschriften, Artikel und Audiolessons. Ich habe ein paar Taxonomien eingerichtet: Sprache, Autor, Lehrer. Der Lehrer ist nur einem Nachrichtentyp zugeordnet, Audiolessons, aber Sprache ist allen Beitragstypen zugeordnet. Ich habe ein Untermenü auf der Audio-Seite erstellt, das Englisch, Hebräisch und Russisch auf Elternebene und unter einer Liste von Lehrern in jeder Sprache enthält.

Ich habe ein paar Probleme: 1 – Einige Lehrer unterrichten in mehr als einer Sprache, also wenn ich auf Joseph unter Englisch klicke, wie kann ich es machen, nur die Pfosten mit Taxonomieausdruck Joseph UND taxonomy Begriff Englisch aufzulisten? 2 – Wenn ich auf Englisch klicke, listet es die englischen Audiolessons UND andere Beiträge auf, die mit dem Taxonomiebegriff Englisch (Artikel, Bücher usw.) verbunden sind. Wie würde ich nur die Audiolessons auflisten?

Mir ist klar, dass ich eine WordPress-Abfrage für Beiträge schreiben kann, die sich auf den Post-Typ und die Taxonomie beziehen, allerdings wird für jede Kombination eine Datei benötigt.

Ich könnte separate Taxonomien für jeden Post-Typ erstellen, zum Beispiel “Audio-Sprache”, dann könnte ich sie leicht auflisten, aber das scheint nicht richtig zu sein. Was ist, wenn ich eine Option haben möchte, um alle englischen Ressourcen zusammen aufzulisten. Soll ich stattdessen hierarchische Taxonomien erstellen? .. Ich bin verwirrt. Jede Hilfe wird sehr geschätzt.

Solutions Collecting From Web of "Taxonomie Struktur Hilfe"

Wenn Sie Ihr Audio-Lektionen-Post-Archiv filtern möchten, können Sie es aus dem Artikel, mit dem ich Sie verlinkt habe, ausleihen und eine benutzerdefinierte Rewrite-Regel hinzufügen:

function wpa_add_rewrite_rules() { global $wp_rewrite; $new_rules = array( 'audio-lessons/language/(.+)/?$' => 'index.php?post_type=audio-lesson&language=' . $wp_rewrite->preg_index(1) ); $wp_rewrite->rules = $new_rules + $wp_rewrite->rules; } add_action( 'generate_rewrite_rules', 'wpa_add_rewrite_rules' ); 

Nach dem erneuten Speichern Ihrer Permalinks würde etwas wie http://example.com/audio-lessons/language/english alle englischen Audiolektionen anzeigen.

Ich bin mir jedoch nicht sicher, ob die von Ihnen angegebene URL ein Post-Typ-Archiv und keine benutzerdefinierte Seitenvorlage ist.

Wenn es sich um eine Seitenvorlage handelt und Sie mehrere Wp_Query() -Aufrufe Wp_Query() Sie eine neue tax_query registrieren und daraus Ihre tax_query .

 function wpa_add_new_query_vars($vars) { $vars[] = 'language'; // name of variable you want to add return $vars; } add_filter( 'query_vars', 'wpa_add_new_query_vars', 10, 1 ); 

Sie brauchen diesen Teil vielleicht nicht einmal, da ich denke, dass die Abfrage var registriert ist, wenn Sie die Taxonomie registrieren.

Dann könntest du Beiträge wie folgt abfragen:

 $args = array( 'post_type' => 'audio-lesson' ); if( $lang = get_query_var( 'language' ) ){ $args['tax_query'] = array( array( 'taxonomy' => 'language', 'field' => 'slug', 'terms' => '$lang' )); } $my_posts = new WP_Query( $args ); 

Ich kann das nicht wirklich testen und die tax_query kann mich manchmal mit ihrer Anordnung von Arrays tax_query so dass ich nicht 100% sicher bin, dass es funktionieren wird.

Wenn Sie einen Link zu einem bestimmten add_query_arg() Sie add_query_arg()