Standardmäßig erstellt WordPress Archive, die alle Ihre Posts in umgekehrter Reihenfolge auflisten. Wenn Benutzer nach Beiträgen in einer bestimmten Kategorie oder mit einem bestimmten Taxonomiebegriff suchen, müssen sie die Archivseite für diese Kategorie oder diesen Begriff besuchen.
Was aber, wenn Sie Ihr Hauptarchiv für einen Beitragstyp benutzerfreundlicher gestalten möchten? In diesem Lernprogramm zeige ich Ihnen, wie Sie eine Archivseite für einen benutzerdefinierten Beitragstyp erstellen, in der Beiträge dieses Beitragstyps nach einer Taxonomie kategorisiert werden, sodass anstelle einer langen Liste für jeden Taxonomiebegriff eine Liste angezeigt wird.
Um diesem Tutorial zu folgen, benötigen Sie eine Entwicklungsinstallation von WordPress und einen Code-Editor. Sie werden ein Thema erstellen, das ein untergeordnetes Thema von vierundzwanzig ist. Sie benötigen also das installierte (was standardmäßig sein sollte)..
Ich werde Ihnen nicht zeigen, wie Sie ein untergeordnetes Design erstellen, aber wenn Sie nicht weiterkommen, schauen Sie sich einfach das Stylesheet im Code-Bundle für dieses Tutorial an.
Nach meiner Erfahrung wird diese Technik am häufigsten für benutzerdefinierte Posttypen und Taxonomien und nicht für normale Posts und Kategorien oder Tags benötigt. Ich beginne damit, einen Posttyp und eine Taxonomie zu registrieren.
Hinweis: Ich verwende den gleichen "Tier" -Post-Typ, den ich in einem früheren Tutorial zum Erstellen eines Image-basierten Archivs registriert habe. Wenn Sie die Dinge noch weiter vorantreiben möchten, können Sie die Technik in diesem Tutorial mit der hier gezeigten kombinieren und Ihre Taxonomiebegriffelisten mit vorgestellten Bildern anzeigen.
Fügen Sie in der Funktionsdatei Ihres Themas den folgenden Code hinzu, um den Beitragstyp zu registrieren:
// Einen benutzerdefinierten Beitragstyp namens 'animals' -Funktion registrieren wptp_create_post_type () $ labels = array ('name' => __ ('Animals'), 'singular_name' => __ ('animal'), 'add_new' => __ ('Neues Tier'), 'add_new_item' => __ ('Neues Tier hinzufügen'), 'edit_item' => __ ('Tier bearbeiten'), 'new_item' => __ ('Neues Tier'), 'view_item '=> __ (' Tier anzeigen '),' search_items '=> __ (' Tiere suchen '),' not_found '=> __ (' Keine Tiere gefunden), 'not_found_in_trash' => __ ('Keine Tiere gefunden in Müll' ), ); $ args = array ('labels' => $ labels, 'has_archive' => true, 'public' => true, 'hierarchisch' => false, 'unterstützt' => array ('title', 'editor', ' Auszug ',' Benutzerdefinierte Felder ',' Miniaturansicht ',' Seitenattribute '),' Taxonomien '=> array (' post_tag ',' category '),); register_post_type ('animal', $ args); add_action ('init', 'wptp_create_post_type');
Als nächstes fügen Sie den Code hinzu, um die Taxonomie zu registrieren:
// Eine Taxonomie mit dem Namen 'Animal Family' -Funktion registrieren wptp_register_taxonomy () register_taxonomy ('animal_cat', 'animal', array ('labels' => array ('name' => 'Animal family', 'singular_name' => ' Tierfamilie ',' search_items '=>' Tierfamilien suchen ',' all_items '=>' Alle Tierfamilien ',' edit_item '=>' Tierfamilien bearbeiten ',' update_item '=>' Tierfamilie aktualisieren ',' add_new_item '=>' Neue Tierfamilie hinzufügen ',' new_item_name '=>' Name der neuen Tierfamilie ',' menu_name '=>' Tierfamilie ',),' hierarchisch '=> wahr,' sort '=> true', args '=> array (' orderby '=>' term_order '),' rewrite '=> array (' slug '=>' animal-family '),' show_admin_column '=> true)); add_action ('init', 'wptp_register_taxonomy');
Sobald Sie dies getan haben, fügen Sie einige Daten hinzu. Unten sehen Sie die Daten, die ich hinzugefügt habe, wobei einige Begriffe der Taxonomie angewendet wurden. Ich mache keinen Anspruch auf die Richtigkeit meiner Terminologie in Bezug auf Tierfamilien, also kommentieren Sie bitte nicht, ob ich das falsch verstanden habe!
Im nächsten Schritt erstellen Sie eine Archivvorlage für den neuen Beitragstyp. Erstellen Sie in Ihrem Design eine neue Datei mit dem Namen Archiv-Tier.php
.
Da dieses Thema ein untergeordnetes Thema von vierundzwanzig ist, muss für die Archivvorlage Code aus diesem Thema als Wrapper für die benutzerdefinierte Schleife, die Sie erstellen, kopiert werden. Fügen Sie Ihrer Archivvorlage also Folgendes hinzu:
Hinweis: Wenn Sie mit Ihrem eigenen Design arbeiten, kopieren Sie den Umbruchcode aus dem Index oder der Archivdatei Ihres eigenen Themas.
3. Füllen der Archivvorlage: Abrufen von Taxonomiebedingungen
Damit Ihr Archiv Tiere nach taxonomischen Begriffen anzeigen kann, müssen Sie diese Begriffe im nächsten Schritt abrufen.
In Ihrer neuen Vorlagendatei unter dem Abschluss
Tag (oder unter dem ersten Teil des Wrapping-Codes, wenn Sie ein eigenes Design verwenden), rufen Sie die Begriffe mit ab
get_terms ()
:'count', 'hide_empty' => 0)); ?>Beachten Sie, dass ich hier zwei Parameter verwendet habe:
Sortieren nach
- Auf diese Weise können Sie die Reihenfolge der angezeigten Begriffe festlegen. Ich habe gebraucht Anzahl
Als Wert wird zuerst der Begriff mit den meisten zugewiesenen Beiträgen angezeigt. Sie können jedoch auch nach Namen oder ID sortieren. Wenn Sie dieses Feld leer lassen, wird WordPress nach Namen sortiert. Siehe die Codex-Seite auf get_terms ()
für mehr Details.hide_empty
- Dadurch wird WordPress angewiesen, keine Begriffe ohne zugewiesene Beiträge abzurufen. Es erspart Ihnen, zu prüfen, ob Ihre Abfrage später Beiträge enthält.Nachdem Sie dies getan haben, verwenden Sie für jeden()
um WordPress anzuweisen, jeden dieser Begriffe zu durchlaufen und eine Abfrage auszuführen, die Sie definieren müssen. Fügen Sie unter dem soeben hinzugefügten Code Folgendes ein:
'animal', 'animal_cat' => $ term-> slug); $ query = new WP_Query ($ args);
Dadurch wird WordPress angewiesen, jeden Begriff durchzugehen, und definiert dann die Abfrage, die jedes Mal ausgeführt werden muss. Die Argumente für die Abfrage enthalten den Post-Typ und den Begriff in der 'animal_cat'
Taxonomie, das ist der Wert der $ term
Variable.
Nachdem Sie Ihre Abfrage definiert haben, müssen Sie eine Schleife hinzufügen. Geben Sie zuerst den Namen des abgefragten Begriffs als Überschrift aus. Unter dem Zeilenanfang $ Abfrage
aber innerhalb der Hosenträger der für jeden
Anweisung, fügen Sie diese Zeile hinzu:
Echo''. $ term-> name. '
';
Fügen Sie als Nächstes den Code hinzu, der Ihre Posts in einer Liste enthält:
// die Posttitel in einem Listenecho ausgeben '
Fügen Sie nun in der Liste Ihre Schleife hinzu:
// Startet die Schleife, während ($ query-> have_posts ()): $ query-> the_post (); ?>
Wie Sie sehen können, ist dies eine direkte Schleife, die den Titel jedes Beitrags innerhalb eines Links zum Beitrag ausgibt und keinen Inhalt ausgibt. Wenn Sie möchten, können Sie hier einen Ausschnitt oder ein Bild einfügen.
Zum Schluss setzen Sie die Abfrage mit zurück wp_reset_postdata ()
unter der Zeile lesen Echo '';
So wird Ihre Abfrage und Schleife jetzt aussehen:
'animal', 'animal_cat' => $ term-> slug); $ query = new WP_Query ($ args); // den Begriffnamen in einem Heading-Tag-Echo ausgeben ''. $ term-> name. '
'; // die Posttitel in einem Listenecho ausgeben '
Speichern Sie schließlich Ihre Vorlagendatei und zeigen Sie Ihr Beitragstyparchiv an. Sie werden sehen, dass Ihre Beiträge nach Taxonomie-Begriffen und nicht in einer langen Liste aufgelistet werden.
Diese Technik ist nützlich, wenn Besucher schnell kategorisierte Daten sehen möchten, ohne sich eine Reihe von Archivseiten ansehen zu müssen. Sie führt alles an einem Ort zusammen, ist jedoch zur Vereinfachung sortiert. Hier sind einige Ideen, wie Sie die Technik anpassen und weiterentwickeln können:
get_categories ()
oder get_tags ()
.index.php
Datei, um Beiträge nach Kategorie, Tag oder Taxonomie anzuzeigen.posts_per_page
und Versatz
In Ihren Abfrageargumenten können Sie dies tun - Details dazu finden Sie auf der Seite WP_Query-Codex.posts_per_page
um die Anzahl der angezeigten Beiträge zu begrenzen, sodass jede Liste die gleiche Länge hat. Sie können dies mit einem Styling kombinieren, um Listen nebeneinander anzuzeigen.get_term_link ()
um dies zu tun.