Introductie van WordPress 3 aangepaste taxonomieën

WordPress 3 vult een aantal belangrijke lacunes aan in de richting van een serieus contentbeheersysteem. De gebruiksvriendelijke functie voor aangepaste taxonomieën biedt ontwerpers van de site krachtige hulpmiddelen voor het bouwen van een goede informatie-architectuur. Ontdek wat taxonomieën zijn, waarom ze nuttig zijn en hoe je ze kunt gebruiken in de tutorial van vandaag!


Wat is een taxonomie?

Taxonomieën zijn verschillende methoden om dingen te classificeren.

Taxonomieën zijn verschillende methoden om dingen te classificeren. Deze zelfstudie gebruikt een voorbeeld van berichten over verschillende desktopcomputers, die kunnen worden geclassificeerd op basis van een aantal verschillende criteria, waaronder:

  • Hoeveelheid RAM
  • Grootte van de harde schijf
  • Snelheid van de CPU
  • Type CPU
  • Besturingssysteem geïnstalleerd
  • enzovoorts…

Een korte geschiedenis van WordPress-taxonomieën

Categorieën

Vóór versie 2.3 had WordPress slechts één generieke taxonomie, Categorie, voor Posts. Dit werkte goed voor blogs, omdat u een categorie op het hoogste niveau met de naam 'Desktop Computers' kunt maken met een subcategorie met de naam 'RAM', die mogelijk subcategorieën heeft zoals 'Minder dan 1 GB', '1 GB', '' 2 GB tot 4 GB, "enzovoort. Een tweede subcategorie van 'desktopcomputers' kan 'besturingssysteem' worden genoemd, met subcategorieën zoals 'Windows XP', 'Mac OS', 'Red Hat', 'Ubuntu', enzovoort.

Wanneer een systeem u toestaat om categorieën te hebben die onderverdeeld kunnen worden in subcategorieën, noemen we dit een hiërarchische structuur. Het beste wat u kon doen voor een serieuze site-architectuur voorafgaand aan WordPress versie 2.3 was om een ​​grote hiërarchie van categorieën te maken, waarbij de categorieën op het hoogste niveau grote taxonomiegroepen vertegenwoordigden.

Tags

Versie 2.3 van WordPress heeft een ander type taxonomie toegevoegd, de zogenaamde Tags. Hoewel categorieën meestal van tevoren worden uitgedacht, specifiek voor de soorten inhoud op een site, bieden tags een meer vrije, geïmproviseerde methode om inhoud te classificeren..

Als een Post bijvoorbeeld schrijft over een bepaalde desktopcomputer, kunnen tags de auteur toestaan ​​om een ​​of meer trefwoorden in te tikken, zoals 'gaming', 'tivo', 'lawaaierige fan', enzovoort. Deze zoekwoorden zijn mogelijk niet zinvol als sitebrede categorieën, maar zorgen voor een extra classificatie voor een bericht. Bezoekers van de site kunnen dan eenvoudig alle berichten vinden die zijn getagd met "noisy fan" later. De vrije vorm van tags helpt ons echter niet om een ​​degelijk classificatiesysteem rond bekende waarden te bouwen, zoals typen besturingssysteemtypen of CPU-typen. Tags zijn ook eendimensionaal en staan ​​geen hiërarchische structuur toe.

Single-level aangepaste taxonomieën

Wordpress versie 2.8 maakte het mogelijk om aangepaste classificatieschema's toe te voegen met slechts een paar wijzigingen aan de code op uw site. Hiermee kunt u een lijst met mogelijke besturingssystemen maken, los van een lijst met mogelijke RAM-typen, enzovoort. Het stond echter niet toe dat deze aangepaste taxonomieën werden gebouwd in een hiërarchie die vergelijkbaar was met de generieke categorieën taxonomie.

Volledig hiërarchische aangepaste taxonomieën

Ten slotte geeft WordPress versie 3 ons volledig hiërarchische aangepaste taxonomieën. Merk op hoe de hiërarchische aard ons in staat stelt de taxonomie van het besturingssysteem te vereenvoudigen, bijvoorbeeld door alle verschillende Windows-varianten onder een "Windows" bovenliggende classificatie te duwen. Hierdoor kunnen bezoekers alle berichten bekijken die zijn geclassificeerd met een Windows-besturingssysteem of specifieker zijn en alleen berichten zien die zijn geclassificeerd met Windows XP, bijvoorbeeld.


Een aangepaste taxonomie maken

Het bewerken van het function.php bestand van uw thema

WordPress versie 3 staat niet toe dat u aangepaste taxonomieën maakt vanuit het beheerscherm. Als u in eerste instantie uw aangepaste taxonomieën wilt definiëren zonder een plug-in, moet u een klein beetje code toevoegen aan het bestand functions.php van uw thema. Dit is niet zo moeilijk - volg gewoon mijn voorbeeld.

Om aangepaste taxonomieën toe te voegen, moeten we het "functions.php" -bestand dat zich in de themamap bevindt, bewerken. Ik gebruik bijvoorbeeld het standaard "twintigten" -thema dat wordt meegeleverd met WordPress 3.0 en mijn WordPress-installatie bevindt zich in een map met de naam "wp." Mijn functions.php-bestand is dan:
[Website_root] /wp/wp-content/themes/twentyten/functions.php.


De taxonomieën toevoegen in code

We houden het voorbeeld van de desktopcomputer bij en voegen afzonderlijke taxonomieën toe voor RAM, harde schijf en besturingssysteem. Op dit moment voegen we eenvoudig de taxonomieën zelf toe, zoals lege containers. Gelukkig kunnen we de verschillende classificaties, zoals 'Windows XP', vanuit het dashboard van de beheerder toevoegen en beheren.


Stap 1 Eén functie om ze allemaal te maken

Ten eerste moeten we een functie bouwen die alle taxonomieën creëert die we nodig hebben. We noemen de functie "build_taxonomies." Laten we deze functie toevoegen aan de onderkant van het bestand functions.php.

 function build_taxonomies () // code zal hier naartoe gaan

Stap 2 Definiëren van de taxonomieën

Vervolgens moeten we voor elke taxonomie die we willen maken een bepaalde WordPress-functie met de juiste parameters aanroepen. Hier is de functie en zijn belangrijke parameters uitgelegd.

 register_taxonomy ('internal_name', 'object_type', array ('hierarchical' => true | false, 'label' => 'Human Readable Name', 'query_var' => true | false, 'rewrite' => true | false));
  • interne naam: Hoe wordt deze taxonomie opgeroepen vanuit WordPress, in de database- en sjabloonbestanden?
  • object type: Welke soorten inhoud kunnen met deze taxonomie worden geclassificeerd? Mogelijke waarden zijn 'post, pagina, link' en vervolgens namen van aangepaste berichttypen die we in een toekomstige zelfstudie zullen leren maken.
  • Vervolgens komt een scala aan optionele parameters. We zullen de belangrijkste in deze tutorial gebruiken, maar een volledige lijst is te vinden op de Functie Referentie / register_taxonomy Codex-pagina. De parameters die we zullen gebruiken zijn:
  • hiërarchische: Als 'waar' heeft deze taxonomie hiërarchische mogelijkheden zoals WordPress Categories. Als 'false', gedraagt ​​deze taxonomie zich ongeveer als tags met vrije vorm.
  • label: Dit is de voor de mens leesbare naam die in de interface van uw site wordt gebruikt om de taxonomie te labelen.
  • query_var: Als 'waar' is, kunnen we WordPress om berichten vragen die afhankelijk zijn van de selecties voor deze taxonomie. We kunnen bijvoorbeeld zoeken naar alle berichten waarvoor de taxonomie van het besturingssysteem 'Windows' heeft geselecteerd.
  • herschrijven: Als 'waar' zal WordPress vriendelijke URL's gebruiken bij het bekijken van een pagina voor deze taxonomie. Een pagina met alle posts met het "Windows" -besturingssysteem geselecteerd, zou bijvoorbeeld worden weergegeven door de volgende URL: http://domain.com/operating_system/windows

Onze invoer specifiek voor het toevoegen van de taxonomie van het besturingssysteem ziet er als volgt uit:

 register_taxonomy ('operating_system', 'post', array ('hierarchical' => true, 'label' => 'Besturingssysteem', 'query_var' => true, 'rewrite' => true));

Ga je gang en voeg dat toe aan je "build_taxonomies" -functie.

Meer informatie:

"registertaxonomie" wordt verder gedefinieerd in de WordPress codex.


Stap 3 De functie Taxonomie creëren oproepen

We moeten nog een regel toevoegen aan het "functions.php" -bestand zodat onze functie "build_taxonomies" daadwerkelijk wordt uitgevoerd. We zullen de functie "build_taxonomies" "inhaken" aan de "init" -gebeurtenis door de volgende code toe te voegen:

 add_action ('init', 'build_taxonomies', 0);

Je kunt deze regel overal toevoegen, maar ik voeg hem meestal toe boven de functie die we bellen, dus het zou er als volgt uitzien:

 // Aangepaste taxonomiecode add_action ('init', 'build_taxonomies', 0); functie build_taxonomies () register_taxonomy ('operating_system', 'post', array ('hierarchical' => true, 'label' => 'Besturingssysteem', 'query_var' => true, 'rewrite' => true)); 

Meer informatie:

Meer informatie over add_action.


Klassificaties toevoegen aan de nieuwe taxonomie

Zodra u de taxonomie "Besturingssysteem" correct hebt toegevoegd aan het bestand "functions.php", moet deze als een nieuw item worden weergegeven in het venster "Posten" van uw dashboard. Klik op de naam van de taxonomie om de classificaties toe te voegen en te bewerken die u wilt opnemen.

Nu kunt u besturingssystemen toevoegen en bewerken, net zoals u generieke categorieën zou toevoegen.


Meer taxonomieën toevoegen

Als u de taxonomieën "RAM" en "Harde schijf" wilt toevoegen die bij het voorbeeld horen, voegt u gewoon het volgende toe aan uw functions.php-bestand:

 register_taxonomy ('ram', 'post', array ('hierarchical' => true, 'label' => 'RAM', 'query_var' => true, 'rewrite' => true)); register_taxonomy ('hard_drive', 'post', array ('hierarchical' => true, 'label' => 'Hard Drive', 'query_var' => true, 'rewrite' => true));

Als dit is voltooid, ziet het gewijzigde gedeelte van het bestand functions.php er ongeveer zo uit:

 // Aangepaste taxonomiecode add_action ('init', 'build_taxonomies', 0); functie build_taxonomies () register_taxonomy ('operating_system', 'post', array ('hierarchical' => true, 'label' => 'Besturingssysteem', 'query_var' => true, 'rewrite' => true)); register_taxonomy ('ram', 'post', array ('hierarchical' => true, 'label' => 'RAM', 'query_var' => true, 'rewrite' => true)); register_taxonomy ('hard_drive', 'post', array ('hierarchical' => true, 'label' => 'Hard Drive', 'query_var' => true, 'rewrite' => true)); 

Een bericht maken met uw nieuwe taxonomie

Maak een paar nieuwe berichten en je ziet je nieuwe taxonomie-opties verschijnen in het scherm Bericht bewerken. Selecteer de classificaties waarvan u denkt dat ze van toepassing zijn op uw berichten.


De verschillende taxonomieën van een bericht weergeven

Niets wat we tot nu toe hebben gedaan, kan worden gezien door de bezoekers van uw site. We willen graag dat berichten laten zien in welke aangepaste taxonomieën ze zijn ingedeeld, net zoals berichten vaak hun categorieën en tags onthullen.

Om dit te doen, hoeven we alleen een eenvoudige toevoeging aan de lus te maken in bepaalde sjabloonbestanden.


Taxonomieclassificaties op individuele pagina's weergeven

In het twintigenthema en vele andere worden de categorieën en tags van een post onder de hoofdtekst weergegeven. We gaan aangepaste taxonomie-informatie toevoegen, als deze bestaat, net voor de categorie- en taginformatie.

Om dit mogelijk te maken, moeten we het sjabloonbestand "single.php" bewerken, dat normaal gesproken wordt gebruikt om een ​​afzonderlijke post weer te geven. Mijn single.php bestand is op: [website_root] /wp/wp-content/themes/twentyten/single.php.


Stap 1 Zoek de juiste plaats om code toe te voegen

Zoek in single.php de regel met:

Dit verschijnt vlak voor de:

In twintigën bevat deze div de categorieën, tags, permalink en andere gegevens voor het huidige bericht. We zullen onze taxonomie-informatie net boven deze div plaatsen.


Stap 2 Retourneer taxonomie-informatie over de huidige post

Vul enkele variabelen in voor het bevatten van de informatie over de taxonomie-informatie en de verschillende taxonomie-informatie die we mogelijk verwachten te vinden.

 ID, 'operating_system', 'Besturingssystemen): ',', ', ");

Hier noemen we de WordPress-functie "get_the_term" met de volgende parameters:

  • $ Post-> ID : de id van het huidige bericht.
  • 'besturingssysteem' : de naam van de aangepaste taxonomie die we controleren op gegevens. We vragen of het huidige bericht classificaties heeft gekregen in de taxonomie 'operating_system'.
  • 'Besturingssystemen)' : Als er iets wordt teruggestuurd, is dit de reeks die we er voor willen hebben.
  • ',' : Als meerdere items worden geretourneerd, is dit de tekenreeks waarvan we deze graag gescheiden houden.
  • " : Als er iets wordt teruggestuurd, is dit de reeks die we erachter willen hebben. In dit geval willen we niets toevoegen achter het resultaat.

We zullen hetzelfde doen voor de andere twee taxonomieën waarvan we verwachten dat ze gegevens bevatten:

 $ ram_list = get_the_term_list ($ post-> ID, 'ram', 'RAM-optie (s): ',', ', "); $ hd_list = get_the_term_list ($ post-> ID,' hard_drive ','Harde schijfoptie (s): ',', ', ");

Meer informatie:

Meer informatie over 'get_the_term_list'.


Stap 3 Formatteer de resultaten van eventuele klassificaties

Controleer op resultaten in elk van de drie mogelijke taxonomieën. Als ze bestaan, voeg ze dan toe aan onze uitvoer, evenals een lijnbreuk.

 // OS-lijst toevoegen als dit bericht zo is getagd als ("! = $ Os_list) $ taxo_text. =" $ Os_list
\ n "; // RAM-lijst toevoegen als dit bericht zo is getagd als ("! = $ ram_list) $ taxo_text. = "$ ram_list
\ n "; // HD-lijst toevoegen als dit bericht zo is getagd als ("! = $ hd_list) $ taxo_text. = "$ hd_list
\ n ";

Stap 4 Geef classificatie-resultaten weer, indien van toepassing

Controleer om te zien of de bovenstaande stappen resulteerden in enige taxonomie-informatie om uit te voeren. Als er taxonomie-info bestaat, voeren we deze uit in een div van klasse "entry-utility".

 // Uitvoertaxonomie-informatie indien aanwezig // OPMERKING: we zullen zelfs geen div openen als er niets in staat. if ("! = $ taxo_text) ?> 

Stap 5 Controleer uw resultaten

Ga naar een berichtpagina en bekijk eventuele aangepaste taxonomieclassificaties hieronder.


Een lijst met berichten bekijken op classificatie van taxonomie

Nu vertellen onze individuele berichten ons op welke aangepaste taxonomieën ze zijn geclassificeerd. Wanneer ze een aangepaste taxonomieclassificatie vermelden, bieden ze ook een koppeling om alle berichten onder die classificatie weer te geven. Als u bijvoorbeeld op de koppeling "Mac OS" naast "Besturingssystemen" onder onze post klikt, worden in theorie alle berichten weergegeven met de besturingssysteemindeling "Mac OS".

Dit gebeurt echter niet uit de doos met WordPress versie 3. We zullen een aangepast sjabloonbestand moeten maken voor het weergeven van taxonomie-archieven om te kunnen werken. WordPress laat bezoekers al hun berichten zien die aan een bepaalde categorie zijn toegewezen, of alle berichten die aan een bepaalde tag zijn gegeven. Wanneer we hier klaar zijn, kunnen we alle berichten die aan bepaalde classificaties zijn toegewezen ook bekijken in onze aangepaste taxonomieën.

Om dit mogelijk te maken, moeten we het sjabloonbestand "taxonomy.php" maken. WordPress zal proberen dit bestand te gebruiken wanneer het berichten wil weergeven in een aangepaste taxonomie.


Stap 1

Open het bestand "category.php", kopieer de inhoud ervan en plak deze in een nieuw bestand met de naam "taxonomy.php." Sla taxonomy.php op in de themamap. Mijn bestand taxonomy.php is bijvoorbeeld:
[Website_root] /wp/wp-content/themes/twentyten/taxonomy.php.


Stap 2 Krijg informatie over de huidige taxonomieclassificatie

In het bestand taxonomy.php moeten we informatie krijgen over de taxonomie die wordt vermeld. We willen waarschijnlijk de naam en beschrijving (indien van toepassing) voor de geselecteerde classificatie.

Net onder , voeg de volgende regel toe:

 $ term = get_term_by ('slug', get_query_var ('term'), get_query_var ('taxonomy'));

Dit krijgt alle informatie over de taxonomie die deze pagina heeft opgeroepen en retourneert deze als een object in de variabele $ term. De classificatie "Mac OS" retourneert bijvoorbeeld een object als zodanig:

 stdClass Object ([term_id] => 13 [naam] => Mac OS [slug] => mac-os [term_group] => 0 [term_taxonomy_id] => 22 [taxonomie] => operating_system [description] => [ouder] => 0 [tel] => 2)

Stap 3 Toon classificatie naam en beschrijving

We willen de paginanaam wijzigen om bezoekers te vertellen waarnaar ze kijken. Aangezien we zijn begonnen met de category.php-sjabloon, kunnen we de regel gebruiken die werd gebruikt om de categorienaam af te drukken en deze een beetje te wijzigen om ons de gewenste paginanaam en, indien van toepassing, beschrijving te geven.

Wijzig de volgende regel van category.php:

 printf (__ ('Category Archives:% s', 'twentyten'), ''. single_cat_title (", false). '');

Om als volgt te lezen:

 printf (__ ('Berichten geclassificeerd als:% s', 'twentyten'), ''. $ term_name. '');

Hiermee wijzigt u de statische tekst die begint met de regel en voegt u de naam van de classificatie in. (Opmerking: voor de juiste lokalisatie moeten we 'Posts classified under:' correct toevoegen aan het bestand languages ​​/ twentyten.pot. Dit valt buiten het bereik van deze tutorial, maar wees u bewust van de overtreding hier.)

Voeg dan het volgende toe:

 if ("! = $ term_descr) echo"

$ term_descr

\ n ";

Als er een beschrijving bestaat voor deze classificatie, wordt deze net onder de titel weergegeven.

Nadat u wijzigingen in taxonomy.php hebt aangebracht, bezoekt u een van uw berichten met een aangepaste taxonomieclassificatie. Vanwege ons eerdere werk in het bestand 'single.php' moet de post aangepaste classificaties daaronder bevatten. Klik eenvoudig op een van die classificaties om de taxonomie-lijst op het werk te zien.


Conclusie

Ik hoop dat deze tutorial duidelijk heeft uitgelegd wat taxonomieën zijn en je liet zien hoe je ze kunt gebruiken in WordPress 3 als een krachtig organisatietool. Ik hoop een vervolgtraining te kunnen geven met uitleg over aangepaste berichttypen van WordPress, hun nauwe relatie met aangepaste taxonomieën en hoe deze te gebruiken. Heel erg bedankt voor het nemen van de tijd om Nettuts te bezoeken!