Wordpress-aangepaste taxonomieën naar het volgende niveau brengen

Aangepaste taxonomieën van WordPress zijn een geweldige manier om de inhoud van uw website te organiseren, maar wat zijn ze precies? Hoe kunnen ze effectief worden geïmplementeerd? Wat nog belangrijker is, hoe kunnen ze uw website ten goede komen? Vrees niet, wat u hierna zult lezen is de meest uitgebreide gids voor aangepaste taxonomieën van WordPress die u vandaag op internet vindt.


Basisbeginselen van aangepaste taxonomieën

Op het meest basale niveau is een taxonomie gewoon een methode om dingen samen te groeperen. Als je eerder een bericht in WordPress hebt gepubliceerd, is de kans groot dat je al taxonomieën hebt gebruikt. De standaard tags en categorieën binnen WordPress worden als taxonomieën beschouwd! Laten we het nu eens hebben over aangepaste taxonomieën. Met WordPress kun je sinds versie 2.3 je eigen taxonomieën maken, maar ze zijn pas echt populair geworden sinds versie 2.9.

Een populaire manier om aangepaste taxonomieën uit te leggen is om het voorbeeld van films te gebruiken. Laten we doen alsof we een artikel schrijven over de film "Terminator 2". Wat we gewoonlijk doen met de standaard ingebouwde taxonomieën, classificeert het artikel met behulp van tags en categorieën. Het probleem met de ingebouwde taxonomieën is dat ze extreem generiek zijn.

We gaan door met dit voorbeeld en doen alsof we 'Arnold Schwarzenegger' als een van onze tags hebben ingevoerd. Voor degenen die niet bekend zijn met de Oostenrijkse acteur, kan dit behoorlijk verwarrend zijn. Het is natuurlijk de naam van een persoon, maar is deze persoon een acteur? Een regisseur? Een producent? Een veel betere aanpak zou zijn om een ​​aangepaste taxonomie genaamd "Actors" te maken en Arnold's naam aan die specifieke taxonomie toe te voegen. We zouden nog verder kunnen gaan en extra aangepaste taxonomieën kunnen toevoegen voor andere typische filmgroepen, zoals genres, regisseurs, producenten en anderen.


Begrip Voorwaarden

Een woord dat je ook goed zou kunnen doen om jezelf bekend te maken, is 'term'. In WordPress is een term een ​​enkele classificatie die leeft binnen en wordt gedefinieerd door zijn taxonomie. In ons vorige voorbeeld hadden we een taxonomie genaamd "Actoren", daarom zouden onze voorwaarden zijn: Arnold Schwarzenegger, Linda Hamilton, Edward Furlong, enz..


Hoe kunnen aangepaste taxonomieën profiteren van mijn website?

Aangepaste taxonomieën kunnen de organisatie en bruikbaarheid van uw website aanzienlijk vergroten. Vanwege de flexibiliteit die wordt geboden door aangepaste taxonomieën, zullen ze altijd specifieker zijn voor uw onderwerp van keuze in vergelijking met tags en categorieën. Een voor de hand liggend voorbeeld is om uw taxonomieën onderaan of bovenaan uw artikel op te nemen. In het onderstaande voorbeeld heb ik drie aangepaste taxonomieën gemaakt en de bijbehorende termen onder het hoofdinhoudsgebied van het artikel weergegeven.

Cool toch? Dat is echter niet het enige gebruik. In het bovenstaande voorbeeld merk je op dat de tekst een hyperlink lijkt te hebben, dat is omdat het is. Aangepaste taxonomieën stellen u in staat om archieven te hebben voor specifieke voorwaarden. Dit zorgt niet alleen voor een betere inhoudsorganisatie, maar stelt gebruikers ook in staat zich via RSS abonneren op specifieke voorwaarden. Een ander minder geïmplementeerd gebruik voor aangepaste taxonomieën is om ze eenvoudigweg te gebruiken als vervanging voor tags. Ik besloot om deze exacte aanpak te volgen voor een gamingblog die ik onlangs lanceerde. U hoeft niet altijd het feit te benadrukken dat u aangepaste taxonomieën gebruikt, maar onthoud dat hun werkelijke kracht ligt in het potentieel voor superieure archivering, zoeken, query's en URL-structuur..

Er zijn verschillende andere voordelen aan het gebruik van aangepaste taxonomieën, maar in plaats van het bespreken van theoretische use-cases, laten we in plaats daarvan enkele praktische voorbeelden bekijken met code om er een back-up van te maken.


Onze eerste aangepaste taxonomie schrijven

Nu we begrijpen wat taxonomieën zijn en hoe ze te gebruiken, kunnen we beginnen ze in onze thema's te implementeren. Om te beginnen registreren we eerst onze aangepaste taxonomie. In dit voorbeeld maak ik een taxonomie genaamd "Actors". Als je deze zelfstudie volgt, wil je je thema's openen functions.php bestand en voeg de volgende code in.

 $ labels = array ('naam' => __ ('Acteurs', 'uw-thema's-tekst-domein'), 'singular_name' => __ ('Actor', 'uw-thema's-tekst-domein'), ' search_items '=> __ (' Zoek acteurs ',' uw-thema's-tekst-domein '),' popular_items '=> __ (' Populaire acteurs ',' uw-thema's-tekst-domein '),' all_items '=> __ ('All Actors', 'your-themes-text-domain'), 'parent_item' => __ ('Parent Actor', 'your-themes-text-domain'), 'edit_item' => __ ('Bewerken Actor ',' your-themes-text-domain '),' update_item '=> __ (' Update Actor ',' your-themes-text-domain '),' add_new_item '=> __ (' Voeg nieuwe acteur toe ', 'your-themes-text-domain'), 'new_item_name' => __ ('Nieuwe actor', 'uw-thema's-tekst-domein'), 'separate_items_with_commas' => __ ('Aparte acteurs met komma's', 'uw -themes-text-domain '),' add_or_remove_items '=> __ (' Acteurs toevoegen of verwijderen ',' uw-thema's-tekst-domein '),' choose_from_most_used '=> __ (' Kies uit meest gebruikte acteurs ',' uw-thema's-tekst-domein ')); $ args = array ('labels' => $ labels, 'public' => true, 'hierarchical' => false, 'show_ui' => true, 'show_in_nav_menus' => true, 'query_var' => true); register_taxonomy ('actors', 'post', $ args);

Wees niet ongerust door de hoeveelheid code hier, het is allemaal vrij simpel als je het opsplitst. Het grootste deel van de code bevindt zich in de $ labels matrix. Deze array definieert de inhoud van bepaalde labels in het WordPress-dashboard. De $ args array is waar de echte magie gebeurt; dit definieert de instellingen voor de taxonomie.

U zult opmerken dat voor het "labels" -argument we de array van labels die we eerder hebben gemaakt, doorgeven. Een ander argument dat het vermelden waard is, is het "hiërarchische" argument. Dit bepaalt of onze taxonomieën wel of niet kunnen beschikken over geneste taxonomieën of 'kind'-taxonomieën. In ons voorbeeld hebben we deze specifieke functionaliteit niet nodig maar nemen we kennis van het bestaan ​​ervan, omdat u in toekomstige projecten mogelijk een gedetailleerd taxonomiesysteem nodig heeft.

Het uitleggen van elk argument valt buiten het bestek van deze specifieke tutorial, maar als u meer wilt weten, kunt u deze argumenten altijd in detail bestuderen in de officiële WordPress codex register_taxonomy pagina.

Het laatste waar je rekening mee moet houden is de oproep aan de register_taxonomy functie. Het eerste argument definieert de naam van de taxonomie (deze wordt intern gebruikt binnen WordPress). Het tweede argument definieert aan welk berichttype de taxonomie zal worden gehecht. In ons scenario koppelen we het aan standaard WordPress-berichten. Als alternatief kunt u deze koppelen aan een aangepast berichttype of zelfs meerdere verschillende berichttypen door deze een reeks berichttypen door te geven.

Nu we onze aangepaste taxonomie met succes hebben geregistreerd, zult u merken dat we nu een meta-box "Actoren" hebben die in de rechterkolom van de WordPress-pagina voor het bewerken van berichten zit. In deze fase worden termen in deze metabox opgeslagen in de database, maar niet in de frontend van uw thema. Laten we het eerder gepresenteerde voorbeeld implementeren met de drie taxonomielijsten, die zich onderaan de post bevinden.

Voor dit voorbeeld moet u de code die wordt gebruikt om de acteurstaxonomie te registreren twee keer dupliceren en de labels hernoemen om onze extra taxonomieën, genres en schrijvers weer te geven. Hier is wat mijn functions.php bestand ziet er tot nu toe uit.

 $ labels = array ('naam' => __ ('Acteurs', 'uw-thema's-tekst-domein'), 'singular_name' => __ ('Actor', 'uw-thema's-tekst-domein'), ' search_items '=> __ (' Zoek acteurs ',' uw-thema's-tekst-domein '),' popular_items '=> __ (' Populaire acteurs ',' uw-thema's-tekst-domein '),' all_items '=> __ ('All Actors', 'your-themes-text-domain'), 'parent_item' => __ ('Parent Actor', 'your-themes-text-domain'), 'edit_item' => __ ('Bewerken Actor ',' your-themes-text-domain '),' update_item '=> __ (' Update Actor ',' your-themes-text-domain '),' add_new_item '=> __ (' Voeg nieuwe acteur toe ', 'your-themes-text-domain'), 'new_item_name' => __ ('Nieuwe actor', 'uw-thema's-tekst-domein'), 'separate_items_with_commas' => __ ('Aparte acteurs met komma's', 'uw -themes-text-domain '),' add_or_remove_items '=> __ (' Acteurs toevoegen of verwijderen ',' uw-thema's-tekst-domein '),' choose_from_most_used '=> __ (' Kies uit meest gebruikte acteurs ',' uw-thema's-tekst-domein ')); $ args = array ('labels' => $ labels, 'public' => true, 'hierarchical' => false, 'show_ui' => true, 'show_in_nav_menus' => true, 'query_var' => true); register_taxonomy ('actors', 'post', $ args); $ labels = array ('naam' => __ ('Genres', 'uw-thema's-tekst-domein'), 'singular_name' => __ ('Genre', 'uw-thema's-tekst-domein'), ' search_items '=> __ (' Zoek genres ',' uw-thema's-tekst-domein '),' popular_items '=> __ (' Populaire genres ',' uw-thema's-tekst-domein '),' all_items '=> __ ('All Genres', 'your-themes-text-domain'), 'parent_item' => __ ('Parent Genre', 'your-themes-text-domain'), 'edit_item' => __ ('Bewerken Genre ',' uw-thema's-tekst-domein '),' update_item '=> __ (' Update genre ',' uw-thema's-tekst-domein '),' add_new_item '=> __ (' Voeg nieuw genre toe ', 'your-themes-text-domain'), 'new_item_name' => __ ('Nieuw genre', 'uw-thema's-tekst-domein'), 'separate_items_with_commas' => __ ('Gescheiden genres met komma's', 'uw -themes-text-domain '),' add_or_remove_items '=> __ (' Genres toevoegen of verwijderen ',' your-themes-text-domain '),' choose_from_most_used '=> __ (' Kies uit meest gebruikte genres ',' uw-thema's-tekst-domein ')); $ args = array ('labels' => $ labels, 'public' => true, 'hierarchical' => false, 'show_ui' => true, 'show_in_nav_menus' => true, 'query_var' => true); register_taxonomy ('genres', 'post', $ args); $ labels = array ('naam' => __ ('Writers', 'uw-thema's-tekst-domein'), 'singular_name' => __ ('Writer', 'uw-thema's-tekst-domein'), ' search_items '=> __ (' Search Writers ',' your-themes-text-domain '),' popular_items '=> __ (' Populaire schrijvers ',' uw-thema's-tekst-domein '),' all_items '=> __ ('All Writers', 'your-themes-text-domain'), 'parent_item' => __ ('Parent Writer', 'your-themes-text-domain'), 'edit_item' => __ ('Bewerken Writer ',' your-themes-text-domain '),' update_item '=> __ (' Update Writer ',' your-themes-text-domain '),' add_new_item '=> __ (' Voeg nieuwe schrijver toe ', 'your-themes-text-domain'), 'new_item_name' => __ ('New Writer', 'your-themes-text-domain'), 'separate_items_with_commas' => __ ('Separate Writers with commas', 'your -themes-text-domain '),' add_or_remove_items '=> __ (' Schrijvers toevoegen of verwijderen ',' jouw-thema's-tekst-domein '),' choose_from_most_used '=> __ (' Kies uit meest gebruikte schrijvers ',' uw-thema's-tekst-domein ')); $ args = array ('labels' => $ labels, 'public' => true, 'hierarchical' => false, 'show_ui' => true, 'show_in_nav_menus' => true, 'query_var' => true); register_taxonomy ('writers', 'post', $ args);

Nu we onze drie taxonomieën hebben geregistreerd, zijn we klaar om onze nieuw gecreëerde taxonomieën en termen binnen ons thema te tonen. Zorg ervoor dat u een bestaand bericht bewerkt om enkele dummy-termen toe te voegen in de metaboxen van de nieuwe taxonomie.

Voeg de volgende code toe onderaan uw functions.php het dossier.

 function display_post_taxonomies ($ content) if (is_single ()) $ args = array ('public' => true, '_builtin' => false); $ output = 'objecten'; $ operator = 'and'; $ taxonomies = get_taxonomies ($ args, $ output, $ operator); if ($ taxonomies) $ content. = '
'; foreach ($ taxonomies als $ taxonomy) $ args = array ('orderby' => 'name', 'echo' => false, 'taxonomy' => $ taxonomy-> name, 'title_li' => ''. __ ($ taxonomie-> labels-> naam, 'uw-thema's-tekst-domein'). '',' show_option_none '=> __ (' Nee '. $ taxonomy-> labels-> naam,' uw-thema's-tekst-domein ')); $ content. = '
    '. wp_list_categories ($ args). '
'; $ content. = '
'; return $ inhoud; add_filter ('the_content', 'display_post_taxonomies');

In een notendop filteren we de inhoud van de post om ons aangepaste taxonomiesegment onder aan de post toe te voegen. Het gebruik van een filter in plaats van een sjabloontag betekent dat we geen specifieke sjabloonbestanden hoeven te bewerken. Dit is niet alleen eenvoudiger, maar het stelt ons ook in staat om deze code in meerdere thema's op een meer flexibele manier te gebruiken.

Je zult ook merken dat deze functie extreem generiek is; we refereren helemaal niet aan de taxonomieën die we eerder hebben gecreëerd. De bovenstaande code pakt alleen aangepaste taxonomieën, de get_taxonomies functie met de args array-index "built_in"ingesteld op false zorgt ervoor dat we geen gebundelde WordPress-taxonomieën opnemen.

Vervolgens doorlopen we onze taxonomieën en beginnen we met het toevoegen van aanvullende HTML-elementen voor opmaakdoeleinden. Binnen onze lus maken we ook gebruik van de wp_list_categories functie. Deze functie bereidt een ongeordende lijst van termen voor een gegeven taxonomie voor. Het behandelt niet alleen de voorbereiding van de HTML-structuur, maar koppelt ook elke afzonderlijke term automatisch aan zijn respectieve archiefpagina.

Nu, als u uw bericht laadt, zult u merken dat u een set van drie ongeordende lijsten hebt, die elk een taxonomiekopschrift met de bijbehorende termen eronder weergeven. Het probleem is dat er nog geen styling is. Voeg de volgende code toe aan uw thema's style.css bestand om het een beetje op te fleuren.

 .taxonomy_container overflow: verborgen; weergave: blok; beiden opschonen; margin-bottom: 20px;  .taxonomy_container ul margin: 0px; opvulling: 0px; list-style-type: none;  .taxonomy_container> ul width: 31%; zweven: links; marge-recht: 3,5%;  .taxonomy_container> ul: last-child margin-right: 0%;  .taxonomy_title padding-left: 2px; padding-bottom: 2px; border-bottom: 2px solid # 333; weergave: blok; margin-bottom: 2px; lettertype: vet;  .taxonomy_container> ul li ul li padding-left: 2px; padding-bottom: 3px; border-bottom: 1px stippellijn #ccc; margin-bottom: 3px;  .taxonomy_container> ul li ul li: last-child border-bottom: 0px; 

Conclusie

Daar heb je het mensen; deel een van onze gids om aangepaste WordPress-taxonomieën naar een hoger niveau te tillen. Vandaag hebben we gekeken naar wat aangepaste taxonomieën zijn, waar ze goed in zijn en hoe ze effectief in uw thema kunnen worden geïmplementeerd. In het volgende artikel zullen we kijken naar het aanpassen van uw taxonomie en term archive templates.