✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

WordPress-taksonomiat: ehdot, vanhemmat, lapset

14

Ohjelmallinen taksonomioiden luominen näyttää olevan asia, joka tulee aina uudelleen esiin niille, jotka rakentavat ratkaisuja muille WordPressissä.

Taksonomiat itse voivat olla jopa hieman hämmentäviä; Olen kuitenkin huomannut, että seuraavat asiat yleensä auttavat vahvistamaan konseptia hieman:

Hierarkkiset taksonomiat ovat analogisia kategorioiden kanssa; ei-hierarkkiset taksonomiat ovat analogisia tunnisteiden kanssa.

Oletetaan kuitenkin, että luot jollekin sellaisen ratkaisun, että sinun on tuotava tiedot postauksena ja käytettävä siihen taksonomiaa. Lisäksi ehkä haluat soveltaa viestiin myös päätaksonomiaa.

Kuinka voimme tehdä sen?

WordPress-taksonomiat: rekisteröinti, vanhemmat, lapset ja paljon muuta

Tilanne on jotakuinkin tällainen:

Sinulla on viesti, johon sovelletaan taksonomiaa. Jos taksonomialla on vanhempi, haluamme soveltaa sitä myös virkaan.

Tätä varten tarvitsemme neljä (ehkä viisi) toimintoa:

  1. rekisteri_taksonomia
  2. wp_insert_term
  3. get_term_by
  4. wp_set_object_terms

Lisään myös, että mielestäni on hyvä idea käyttää sanitize_title_with_dashes, jos aiot käyttää jonkin tyyppistä puhdistamatonta saapuvaa merkkijonoa viestin tyypin slugille (mutta se ei tietenkään ole välttämätöntä, jos et ole ).

1 Rekisteröi taksonomia

Tätä esimerkkiä varten aiomme luoda taksonomian mukautetulle viestityypille.

Koska tämä voi olla mikä tahansa, jonka parissa työskentelet, aion käyttää muuttujaa nimeltä $postType osoitan asian.

<?php

register_taxonomy(
  'acme-category',
  $postType,
  [
      'label' => 'Acme Categories',
      'rewrite' => ['slug' => 'acme-category'],
      'capabilities' => [
          'manage_terms' => 'manage_options',
          'edit_terms' => 'manage_options',
          'delete_terms' => 'manage_options',
          'assign_terms' => 'manage_options',
      ],
      'hierarchical' => true,
  ]
);

Se on riittävän yksinkertaista, mutta ota huomioon koodiviittaus :

Yksinkertainen toiminto taksonomiaobjektin luomiseen tai muokkaamiseen annettujen parametrien perusteella. Jos muutat olemassa olevaa taksonomiaobjektia, huomaa, että $object_typealkuperäisen rekisteröinnin arvo korvataan.

Yleensä tämä ei ole ongelma, mutta jos työskentelet suuren sovelluksen tai jo olemassa olevan sovelluksen parissa, se on pidettävä mielessä.

2 Lisää termi taksonomialle

Oletetaan seuraavaksi, että $customPost on käytettävissäsi ja että siinä on toiminto sen nimen, otsikon tai jonkin muun ominaisuuden, jota se tunnistaa (muu kuin sen tunnus), hakemiseen.

Tämä voidaan siirtää toimintoon tai se voidaan asettaa saataville käyttämällä muita WordPressin tarjoamia toimintoja. Tässä esimerkissä aion käyttää getName() -funktiota $customPost-  objektissa.

<?php

$termInfo = wp_insert_term(
  $customPost->getName(),
  'acme-category',
  ['slug' => sanitize_title_with_dashes($customPost->getName())]
);

Huomaa, että luen myös funktion tuloksen $termInfo- muuttujaan. Käytämme tätä seuraavassa vaiheessa etsiäksemme ylätason, jos se on olemassa, ja soveltaa sitä myös mukautettuun viestiobjektiin.

3 Etsi termin vanhempi

Tässä käytämme juuri luomaamme termiä nähdäksemme, onko sille olemassa vanhempi. Huomaa, että jos se palauttaa epätosi, taksonomiaa ei ole olemassa (tai jos termiä ei löydy).

WordPress-taksonomiat: ehdot, vanhemmat, lapset

Tätä varten sinun kannattaa lisätä koodiisi ehto, jotta se voidaan tarvittaessa luoda. Jotta koodi pysyisi ytimekkäänä, jätän sen pois seuraavasta koodista :

<?php

$parentTermInfo = get_term_by(
  'term_taxonomy_id',
  $termInfo['term_taxonomy_id'],
  'acme-category',
  ARRAY_A
);

Huomaa, että tallennan yllä olevan koodin tuloksen $parentTermInfo- muuttujaan. Tämä on, jotta voimme välittää tämän viimeiselle toiminnollemme, joka käyttää ylätason tietoja viestiobjektiimme.

4 Käytä termiä viestiin

Lopuksi käytämme termiä (tai termejä), jos emoobjekti on olemassa. Muista, että tässä tarvitaan ehdollista. Yksinkertaisesti sanottuna, jos ylätasoa ei ole, $parentTermInfo[’parent’]- arvoa ei tarvita.

WordPress-taksonomiat: ehdot, vanhemmat, lapset

Mutta alla olevan koodin osalta oletamme, että meillä on se.

<?php

wp_set_object_terms(
  $customPost->getId(),
  [
      $parentTermInfo['parent'],
      $termInfo['term_id'],
  ],
  'acme-category',
  true
);

Huomaa koodiviittauksesta, että tämä luo termin, jos sitä ei vielä ole olemassa. muussa tapauksessa se käyttää jo määritettyä ja soveltaa sitä viestiin.

Ja Valmis

Yleisesti ottaen se ei ole niin paljon työtä. Se auttaa varmistamaan, että sinulla on selkeä käsitys taksonomioiden ja niiden termien toiminnasta. Lisäksi se auttaa myös tietämään, kuinka noutaa tietyn termin yläosa, jos haluat tehdä sen (muuten kolmas vaihe ei ole välttämätön).

Mutta toivottavasti yllä olevat linkit ja koodi tarjoavat sinulle kaiken, mitä tarvitset taksonomian luomiseen ja sen soveltamiseen viestiin (sekä tarvittaessa päätermi).

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja