✅ WEB ja WordPressi uudised, teemad, pistikprogrammid. Siin jagame näpunäiteid ja parimaid veebisaidi lahendusi.

WordPressi taksonoomiad: tingimused, vanemad, lapsed

16

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:

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

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).

WordPressi taksonoomiad: tingimused, vanemad, lapsed

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.

WordPressi taksonoomiad: tingimused, vanemad, lapsed

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).

See veebisait kasutab teie kasutuskogemuse parandamiseks küpsiseid. Eeldame, et olete sellega rahul, kuid saate soovi korral loobuda. Nõustu Loe rohkem