WordPressi taksonoomiad: tingimused, vanemad, lapsed
Tundub, et taksonoomiate programmiline loomine on punkt, mis tuleb ikka ja jälle esile nende jaoks, kes WordPressis teistele lahendusi loovad.
Taksonoomia ise võib isegi veidi segadust tekitada; Siiski olen avastanud, et tavaliselt aitab kontseptsiooni veidi kinnistada järgmine:
Hierarhilised taksonoomiad on analoogsed kategooriatega; mittehierarhilised taksonoomiad on analoogsed siltidega.
Kuid siiski oletame, et loote kellelegi sellise lahenduse, et peate importima teabe postitusena ja rakendama sellele taksonoomiat. Lisaks võib-olla soovite postitusele rakendada ka vanema taksonoomiat.
Kuidas me saame seda teha?
WordPressi taksonoomiad: registreerimine, vanemad, lapsed ja palju muud
Olukord on umbes selline:
Teil on postitus, millele rakendatakse taksonoomiat. Kui taksonoomial on vanem, soovime seda ka ametikohale rakendada.
Selleks vajame nelja (võib-olla viit) funktsiooni:
Lisan ka, et minu arvates on hea mõte kasutada sanitize_title_with_dashes, kui kavatsete kasutada mõnda tüüpi desinfitseerimata sissetulevat stringi postituse tüübi slugi jaoks (aga see pole muidugi vajalik, kui te seda ei tee ).
1 Registreerige taksonoomia
Selle näite jaoks loome kohandatud postituse tüübi jaoks taksonoomia.
Kuna see võib olla ükskõik, millega te töötate, kasutan selle punkti demonstreerimiseks muutujat nimega $postType.
<?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,
]
);
See on piisavalt lihtne, kuid pange tähele koodi viidet :
Lihtne funktsioon taksonoomiaobjekti loomiseks või muutmiseks etteantud parameetrite alusel. Olemasoleva taksonoomiaobjekti muutmisel pange tähele, et
$object_typealgse registreeringu väärtus kirjutatakse üle.
Üldiselt pole see probleem, kuid kui töötate suure rakendusega või juba olemasoleva rakendusega, siis tasub seda meeles pidada.
2 Sisestage taksonoomia termin
Järgmiseks oletagem, et $customPost on teile kättesaadavaks tehtud ja sellel on funktsioon selle nime, pealkirja või mõne muu selle tuvastamiseks kasutatava atribuudi (va ID) hankimiseks.
Selle saab edasi anda funktsiooniks või teha kättesaadavaks muude WordPressi pakutavate funktsioonide kasutamise kaudu. Selles näites kasutan objektil $customPost funktsiooni getName().
<?php
$termInfo = wp_insert_term(
$customPost->getName(),
'acme-category',
['slug' => sanitize_title_with_dashes($customPost->getName())]
);
Pange tähele, et ma loen funktsiooni tulemuse ka muutujasse $termInfo. Kasutame seda järgmises etapis vanema leidmiseks, kui see on olemas, ja rakendame selle ka oma kohandatud postitusobjektile.
3 Otsige üles termini vanem
Siin kasutame äsja loodud terminit, et näha, kas selle jaoks on vanem olemas. Pange tähele, et kui see tagastab vale, siis taksonoomiat ei eksisteeri (või kui terminit ei leita).
Sel eesmärgil soovite vajadusel koodi loomiseks lisada tingimuse. Et kood jääks kokkuvõtlikuks, jätan selle järgmises koodis välja :
<?php
$parentTermInfo = get_term_by(
'term_taxonomy_id',
$termInfo['term_taxonomy_id'],
'acme-category',
ARRAY_A
);
Märkus. Salvestan ülaltoodud koodi tulemuse muutujasse $parentTermInfo. See on selleks, et saaksime selle edasi anda oma lõplikule funktsioonile, mille eesmärk on rakendada vanemateavet meie postitusobjektile.
4 Rakendage postitusele tähtaeg
Lõpuks rakendame terminit (või termineid), kui on olemas ülemobjekt. Tuletage meelde, et siin on tingimuslikkust vaja. Lihtsamalt öeldes, kui vanemat pole, pole $parentTermInfo[‘parent’] väärtust vaja.
Kuid alloleva koodi puhul eeldame, et meil see on.
<?php
wp_set_object_terms(
$customPost->getId(),
[
$parentTermInfo['parent'],
$termInfo['term_id'],
],
'acme-category',
true
);
Koodiviite põhjal pange tähele, et see loob termini, kui seda veel pole; vastasel juhul kasutab see juba määratletut ja rakendab selle postitusele.
Ja Valmis
Üldiselt ei ole see nii palju tööd. See aitab tagada, et teil on selge arusaam taksonoomiate ja nende mõistete toimimisest. Lisaks aitab see ka teada, kuidas otsida antud termini vanemat, kui seda teha soovite (muidu pole kolmas samm vajalik).
Kuid loodetavasti pakuvad ülaltoodud lingid ja kood teile kõike, mida vajate taksonoomia loomiseks ja selle postitusele rakendamiseks (samuti vajadusel ematermini).

