Tassonomie di WordPress: termini, genitori, figli
La creazione di tassonomie in modo programmatico sembra essere un punto che emerge di tanto in tanto per coloro che stanno costruendo soluzioni per altri su WordPress.
Le tassonomie stesse possono anche creare un po’ di confusione; tuttavia, ho scoperto che quanto segue di solito aiuta a consolidare un po’ il concetto:
Le tassonomie gerarchiche sono analoghe alle categorie; le tassonomie non gerarchiche sono analoghe ai tag.
Tuttavia, supponiamo che tu stia creando una soluzione per qualcuno tale da dover importare informazioni come post e applicarvi una tassonomia. Inoltre, forse vuoi applicare anche una tassonomia genitore al post.
Come possiamo farlo?
Tassonomie di WordPress: registrazione, genitori, figli e altro
La situazione è più o meno questa:
Hai un post a cui verrà applicata una tassonomia. Se la tassonomia ha un genitore, vogliamo applicarlo anche al post.
Per fare ciò, avremo bisogno di quattro (forse cinque) funzioni:
Aggiungo anche che penso sia una buona idea usare sanitize_title_with_dash se hai intenzione di usare un tipo di stringa in entrata non disinfettata per lo slug del tipo post (ma non è necessario se non lo sei, ovviamente ).
1 Registra la tassonomia
Per questo esempio, creeremo una tassonomia per un tipo di post personalizzato.
Poiché questo potrebbe essere qualsiasi cosa su cui stai lavorando, userò una variabile chiamata $postType per dimostrare il punto.
<?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,
]
);
È abbastanza semplice, ma prendi nota dal riferimento del codice :
Una semplice funzione per creare o modificare un oggetto tassonomia in base ai parametri forniti. Se si modifica un oggetto tassonomia esistente, si noti che il
$object_typevalore della registrazione originale verrà sovrascritto.
In genere, questo non è un problema, ma se stai lavorando su un’applicazione di grandi dimensioni o su un’applicazione preesistente, è qualcosa da tenere a mente.
2 Inserire un termine per la tassonomia
Quindi, supponi che un $customPost ti sia reso disponibile e che abbia una funzione per recuperare il suo nome, il suo titolo o qualche altra proprietà utilizzata per identificarlo (diversa dal suo ID).
Questo potrebbe essere passato in una funzione o potrebbe essere reso disponibile tramite qualsiasi uso di altre funzioni fornite da WordPress. In questo esempio utilizzerò una funzione getName () sull’oggetto $customPost .
<?php
$termInfo = wp_insert_term(
$customPost->getName(),
'acme-category',
['slug' => sanitize_title_with_dashes($customPost->getName())]
);
Nota che sto anche leggendo il risultato della funzione in una variabile $termInfo. Lo useremo nel passaggio successivo per cercare il genitore se esiste e lo applicheremo anche al nostro oggetto post personalizzato.
3 Cerca il genitore di un termine
Qui useremo il termine che abbiamo appena creato per vedere se esiste un genitore per questo. Nota che se restituisce false, la tassonomia non esiste (o se il termine non viene trovato).
A tal fine, ti consigliamo di aggiungere un condizionale al tuo codice per crearlo, se necessario. Per mantenere il codice conciso, tuttavia, lo sto omettendo nel codice seguente :
<?php
$parentTermInfo = get_term_by(
'term_taxonomy_id',
$termInfo['term_taxonomy_id'],
'acme-category',
ARRAY_A
);
Si noti che memorizzo il risultato del codice sopra in una variabile $parentTermInfo. Questo è così che possiamo passarlo alla nostra funzione finale per applicare le informazioni genitore al nostro oggetto post.
4 Applicare il termine a un post
Infine, applicheremo il termine (o termini) se è presente un oggetto padre. Ricorda che è qui che sarà necessario il condizionale. In poche parole, se non c’è un genitore, il valore $parentTermInfo[‘parent’] non sarà necessario.
Ma per il codice qui sotto, supponiamo di averlo.
<?php
wp_set_object_terms(
$customPost->getId(),
[
$parentTermInfo['parent'],
$termInfo['term_id'],
],
'acme-category',
true
);
Dal riferimento al codice, nota che questo creerà il termine se non esiste già; in caso contrario, utilizzerà ciò che è già definito e lo applicherà al post.
E Fatto
In generale, non è molto lavoro. Aiuta ad assicurarsi di avere una chiara comprensione di come funzionano le tassonomie e i loro termini. Inoltre, aiuta anche sapere come recuperare il genitore di un dato termine se è quello che vuoi fare (altrimenti, il terzo passaggio non è necessario).
Ma si spera che i collegamenti e il codice sopra ti forniscano tutto ciò di cui hai bisogno per creare una tassonomia e applicarla a un post (oltre a un termine padre, se necessario).

