In een eerdere zelfstudie heb ik laten zien hoe je een taxonomiearchief maakt met een lijst van berichten op taxonomie.
Deze zelfstudie is vergelijkbaar omdat het u laat zien hoe u berichten in uw archieven kunt scheiden, maar het gebruikt een andere structuur en een ander sjabloonbestand. Wat ik je hier laat zien, is om een archiefsjabloon te maken voor een taxonomie die berichten op posttype vermeldt.
Dit kan handig zijn als u een berichttype hebt geregistreerd dat u gescheiden wilt houden van normale berichten of van een ander berichttype, maar een taxonomie hebt die op beide van toepassing is. Als u bijvoorbeeld boeken en artikelen vermeldt als verschillende berichttypen, maar algemene onderwerpen als uw taxonomie (bijvoorbeeld WordPress!).
In het voorbeeld dat ik hier gebruik, werk ik met het 'dieren'-berichttype zoals ik in de vorige zelfstudie deed, maar deze keer zal ik ook met normale berichten werken. Ik zal eerst dieren met de bevraagde term opnoemen en daarna zal ik blogberichten met die term weergeven.
Ik maak een thema dat een kindthema is van vierentwintig, dus als u de bronbestanden voor deze zelfstudie gebruikt, moet u dit thema ook op uw site hebben geïnstalleerd. In de stylesheet van mijn thema voeg ik het volgende toe:
/ * Naam van het thema: WPTutsPlus Een taxonomiearchief maken om berichten te rangschikken op berichttype URI-thema: http://rachelmccollin.co.uk/wptutsplus-tax-archive-by-post-type/ Beschrijving: thema om WPTutsPlus-zelfstudie over maken te ondersteunen een aangepast taxonomiearchief. Kindthema voor het Twenty veertien-thema. Auteur: Rachel McCollin Auteur URI: http://rachelmccollin.co.uk/ Sjabloon: twentyfourteen Versie: 1.0 * / @import url ("... /twentyfourteen/style.css");
Dat is alles wat ik moet toevoegen om mijn kindthema te maken. Als u uw eigen thema gebruikt, kunt u deze stap overslaan.
Opmerking: als u mijn andere zelfstudie hebt gevolgd over het maken van een archiefsjabloon van het type aangepast type, kunt u het thema dat u hiervoor hebt gemaakt gebruiken omdat het dezelfde berichttypen en taxonomie gebruikt. U moet slechts een tweak maken die ik in deze sectie zal markeren en een nieuw sjabloonbestand voor het taxonomiearchief zal toevoegen.
De volgende stap is het registreren van de taxonomie van het 'dierlijke' posttype en een 'dierfamilie'. Maak een functions.php
bestand voor uw thema en voeg eerst de functie toe om het berichttype te registreren:
// registreer een aangepast berichttype genaamd 'dieren' functie wptp_create_post_type () $ labels = array ('name' => __ ('Dieren'), 'singular_name' => __ ('dier'), 'add_new' => __ ('Nieuw dier'), 'add_new_item' => __ ('Nieuw dier toevoegen'), 'edit_item' => __ ('Dier bewerken'), 'new_item' => __ ('Nieuw dier'), 'view_item '=> __ (' View animal '),' search_items '=> __ (' Dieren zoeken '),' not_found '=> __ (' Geen dieren gevonden '),' not_found_in_trash '=> __ (' Geen dieren gevonden in Prullenbak '),); $ args = array ('labels' => $ labels, 'has_archive' => true, 'public' => true, 'hierarchical' => false, 'supports' => array ('title', 'editor', ' excerpt ',' custom-fields ',' thumbnail ',' page-attributes '),' taxonomies '=> array (' post_tag ',' category '),); register_post_type ('dier', $ args); add_action ('init', 'wptp_create_post_type');
Volg de volgende stap om de aminofamilietaxonomie te registreren.
Als u werkt met het thema dat in de eerdere zelfstudie is gemaakt, moet u toevoegen array ( 'dier' post ')
aan je argumenten voor de functie, van plan om rechtvaardig te zijn 'dier'
.
// registreer een taxonomie met de naam 'Animal Family'-functie wptp_register_taxonomy () register_taxonomy (' animal_cat ', array (' animal ',' post '), array (' labels '=> array (' name '=>' Animal Families ' , 'singular_name' => 'Animal Family', 'search_items' => 'Zoek dierlijke families', 'all_items' => 'Alle dierenfamilies', 'edit_item' => 'Bewerk dierlijke families', 'update_item' => ' Update Animal Family ',' add_new_item '=>' Nieuwe dierfamilie toevoegen ',' nieuwe_itemnaam '=>' Nieuwe dierfamilienaam ',' menu_name '=>' Dierfamilie ',),' hierarchisch '=> waar,' sorteren '=> true,' args '=> array (' orderby '=>' term_order '),' rewrite '=> array (' slug '=>' dierfamilie '),' show_admin_column '=> true)); add_action ('init', 'wptp_register_taxonomy');
Sla uw functiesbestand op en u zult zien dat uw nieuwe berichttype en taxonomie in uw sitebeheerder verschijnen.
Voeg nu wat gegevens toe - ik heb een aantal dieren en berichten toegevoegd aan de familie 'Honden'.
Maak nu een bestand met de naam taxonomie-animal_cat.php
. Dit is de archiefsjabloon voor de nieuwe taxonomie.
Kopieer de wrappercode van uw thema naar dit bestand, zodat het elementen en klassen heeft die overeenkomen met de rest van uw thema. Ik kopieer van de veertien - als je je eigen thema gebruikt, kopieer daar dan van. Kopieer alles behalve de kop en de lus en voeg bovenaan een aantal opmerkingen toe om u eraan te herinneren waarvoor dit bestand is bedoeld:
4. Identificatie van het opgevraagde object
Zodat u de naam van de term die wordt opgevraagd kunt weergeven en uw query's kunt definiëren in de twee lussen die u gaat maken, moet u het opgevraagde object identificeren en opslaan als een variabele.
Voeg het volgende ergens bovenaan de archiefsjabloon toe (ik voeg het toe onder de
get_header ()
noemen):Je zult dat in de volgende stap gebruiken.
5. De kop van het archief uitvoeren
Voordat u uw loops toevoegt, moet u een kop voor uw archiefpagina uitvoeren. In de opening van de
#inhoud
div, voeg de onderstaande code toe:naam; ?>
6. De eerste lus
Onder de kop moet je je eerste lus toevoegen, met behulp van
WP_Query
omdat je de argumenten moet definiëren.Definieer eerst de query:
// Definieer de query $ args = array ('post_type' => 'animal', 'animal_cat' => $ term-> slug); $ query = new WP_Query ($ args);Merk op dat dit de
$ term
variabele die u al hebt gedefinieerd.Voeg vervolgens de lus toe en voer een koppeling uit naar elk dier in een ongeordende lijst:
if ($ query-> have_posts ()) // voer de term naam uit in een heading-tag echo 'Dieren in de '. $ term-> naam. ' Familie
'; // de berichttitels uitvoeren in een lijstecho '
Het is belangrijk om hier twee dingen op te nemen:
wp_reset_postdata ()
om de query opnieuw in te stellen - u moet deze altijd gebruiken met WP_Query
.De tweede lus is bijna identiek aan de eerste lus, behalve de queryargumenten:
'post', 'animal_cat' => $ term-> slug); $ query = new WP_Query ($ args); if ($ query-> have_posts ()) // voer de term naam uit in een heading-tag echo 'Blog Posts Over de '. $ term-> naam. ' Familie
'; // de berichttitels uitvoeren in een lijstecho '
Sla nu uw sjabloonbestand op en bekijk het archief. Je zou twee lijsten moeten zien, een van de dieren en de andere van berichten:
Zo maak je een taxonomie-archief om berichten per berichttype te vermelden. U kunt deze techniek uitbreiden om uw archiefpagina's interessanter te maken:
Ik weet zeker dat je meer mogelijkheden kunt bedenken!