Cum să creați taxonomii personalizate exclusive în WordPress

Publicat: 2022-03-11

WordPress, unul dintre cele mai puternice sisteme open source de blogging și de gestionare a conținutului, este folosit pentru a alimenta o mare parte a interweb-urilor. Până la un sfert din toate site-urile web rulează WordPress și nu lipsește cererea pentru serviciile de dezvoltare WordPress.

Spre deosebire de multe alte CMS-uri, WordPress este iubit de mulți pentru flexibilitatea și personalizarea sa. Taxonomiile, una dintre caracteristicile de bază ale WordPress, vă permit să organizați conținutul așa cum aveți nevoie. Deși vine încorporat cu câteva taxonomii implicite, WordPress vă permite să adăugați câte taxonomii personalizate doriți.

Cu toate acestea, pentru ca taxonomiile să se comporte exact așa cum doriți, vă poate necesita să vă jucați cu unele abordări nedocumentate.

Reprezentare grafică a diferitelor opțiuni de taxonomie WordPress

În acest articol, veți afla cum puteți defini taxonomii personalizate exclusive în WordPress, care se comportă mult mai mult ca niște categorii decât etichete, permițându-vă să vă clasificați postările mult mai strict decât puteți de la cutie.

Ce este o taxonomie?

Conform codexului WordPress:

O taxonomie este o modalitate de a grupa lucrurile.

De exemplu, o grămadă de diferite tipuri de fructe pot fi grupate împreună în funcție de diferite caracteristici și apoi acestor grupuri li se pot atribui nume.

În WordPress, taxonomiile sunt folosite pentru a grupa postări, pagini și chiar tipuri de postări personalizate în diferite grupuri.

Numele diferitelor grupări dintr-o taxonomie se numesc termeni . Luați fructele, de exemplu, și cum pot fi grupate în funcție de culorile lor. În acest caz, denumirile de culori diferite ar fi termenii.

În mod implicit, WordPress este încorporat cu patru taxonomii: categorie , etichetă , categorie de link și format de postare . Puteți afla mai multe despre aceste taxonomii implicite aici.

Printre aceste taxonomii încorporate, categoriile și etichetele sunt foarte asemănătoare, dar au o diferență importantă: Categoriile sunt taxonomii exclusive (adică, pentru fiecare postare, puteți selecta cel mult o categorie), în timp ce fiecărei postări i se pot atribui mai multe etichete.

În plus, categoriile sunt de obicei predefinite, în timp ce etichetele pot fi definite pe măsură ce mergi.

Definirea taxonomiilor personalizate

Puteți defini o taxonomie personalizată folosind funcția register_taxonomy() . Puteți afla mai multe despre funcție aici.

Pentru a vedea cum funcționează această funcție, să definim o taxonomie personalizată pentru postările cu fotografii ale peisajului.

 function view_init() { register_taxonomy( 'view', 'post', array( 'label' => __( 'View' ), 'capabilities' => array( 'assign_terms' => 'edit_guides', 'edit_terms' => 'publish_guides' ) ) ); } add_action( 'init', 'view_init' );

În fragmentul de mai sus, definim o nouă taxonomie pentru postări numită vizualizare .

Vă puteți gândi că această taxonomie este folosită pentru a clasifica fotografiile în funcție de tipul sau natura vederilor care sunt prezente în fotografii (de exemplu, munte, lac sau pădure).

Ca întotdeauna, postările care aparțin unor anumiți termeni ai acestei categorii vor apărea sub /view/{view_name} .

Linia de capabilități din fragmentul de mai sus este opțională. Fără el, WordPress va avea capabilități implicite pentru aceiași utilizatori ca postările. După cum se arată mai sus, acest lucru va permite oricărui utilizator cu capacitatea personalizată „edit_guides” să atribuie taxonomia unei postări și oricărui utilizator cu capacitatea personalizată „publish_guides” să creeze noi articole de taxonomie.

Conform documentației oficiale, există patru capabilități care pot fi definite:

Capacitățile taxonomiei includ assignterms , editterms , manageterms (afișează taxonomia în navigarea administrativă) și deleteterms .

Cum sunt utilizate taxonomiile

În codul dvs., puteți utiliza funcția wp_set_object_terms() pentru a adăuga termeni la obiecte folosind taxonomia. Puteți enumera termenii existenți folosind funcția the_terms() . În plus, puteți utiliza funcția wp_tag_cloud() pentru a genera un nor de termeni pentru taxonomia dvs. personalizată. Puteți afla mai multe despre aceste funcții aici.

În ceea ce privește interfața de utilizare, WordPress creează o nouă casetă meta pe postări pentru fiecare taxonomie. Caseta meta este similară cu caseta meta Etichete, care vă permite să legați unul sau mai mulți termeni la postarea dvs. Aceasta este ceea ce WordPress face în mod implicit și asta este ceea ce putem schimba făcând o taxonomie exclusivă: Faceți ca taxonomia personalizată să se comporte ca taxonomia categoriei.

Forțarea exclusivității asupra taxonomiilor

Când creăm o taxonomie personalizată cu metoda register_taxonomy() , WordPress adaugă o casetă meta cu selecție de mai multe articole la pagina de editare post:

Folosind această casetă meta, un utilizator poate alege orice număr de termeni existenți (deja utilizați) și, de asemenea, poate adăuga termeni noi folosind caseta de text.

Pentru a crea o taxonomie asemănătoare unei categorii, în care fiecare postare aparține cel mult unei categorii dintr-un set de categorii predefinite, puteți face acest lucru modificând puțin WordPress:

  • Ascunde caseta meta implicită creată de WordPress.
  • Creați o casetă meta personalizată pe pagina de editare post, care va oferi controale pentru selectarea unui singur articol.
  • Salvați valoarea taxonomiei când postarea este salvată.

Să aruncăm o privire la fiecare dintre pași.

Ascundeți caseta meta implicită creată de WordPress

Pentru aceasta, trebuie să setăm opțiunile show_in_quick_edit și meta_box_cb la false atunci când apelăm register_taxonomy .

Captură de ecran a unei metacasete de taxonomie personalizată în care puteți adăuga elemente la setul de termeni disponibili

Prima opțiune ascunde taxonomia în panoul de editare rapidă/în bloc, iar a doua opțiune o ascunde în pagina de editare post:

 register_taxonomy( 'custom_taxonomy', 'post', array( 'labels' => array( 'name' => 'Custom Exclusive Taxonomy' ), 'show_in_quick_edit' => false, 'meta_box_cb' => false ));

Când caseta meta implicită este ascunsă, elementele pot fi adăugate la setul de termeni disponibili ai taxonomiei prin intermediul paginii de gestionare a taxonomiei:

Captură de ecran a unei metacasete numită Custom Exclusive Taxonomy cu mai multe butoane radio

Creați o casetă meta personalizată pe pagina de editare a postării

Pentru a crea o cutie meta personalizată, putem folosi cârligul WordPress add_meta_boxes . Puteți afla mai multe despre cârlig aici.

 add_action('add_meta_boxes', 'add_custom_meta_box'); function add_custom_meta_box(){ add_meta_box( 'taxonomy_box', __('Custom Exclusive Taxonomy'), 'fill_custom_meta_box_content', 'post' ,'side'); }

Apelăm metoda add_meta_box cu următoarele argumente:

  • taxonomy_box – ID-ul metaboxului
  • __('Custom Exclusive Taxonomy') – Titlul casetei meta
  • fill_custom_meta_box_content – ​​O funcție care este utilizată pentru a completa conținutul casetei meta
  • post – Aceasta indică faptul că caseta meta ar trebui să apară pe pagina de editare a postării.
  • side – Acesta indică locul în care ar trebui să fie introdusă metaboxul.

Observați cum am specificat taxonomy_box ca ID. Cu toate acestea, funcția din al treilea parametru este cea care ne va permite să definim ce va intra în casetă.

Acum vom implementa funcția fill_custom_meta_box_content :

 <?php function fill_custom_meta_box_content( $post ) { $terms = get_terms( array( 'taxonomy' => 'custom_taxonomy', 'hide_empty' => false // Retrieve all terms )); // We assume that there is a single category $currentTaxonomyValue = get_the_terms($post->ID, 'custom_taxonomy')[0]; ?> <p>Choose taxonomy value</p> <p> <?php foreach($terms as $term): ?> <input type="radio" name="custom_taxonomy" value="<?php echo $term->term_id;?>"<?php if($term->term_id==$currentTaxonomyValue->term_id) echo "checked"; ?>> <label for="taxonomy_term_<?php echo $term->term_id;?>"><?php echo $term->name; ?></label> </input><br/> <?php endforeach; ?> </p> <?php }

Aici, mai întâi recuperăm toți termenii (adică, valorile existente) ai taxonomiei. Le vom folosi pentru a afișa o listă de butoane radio.

În continuare, recuperăm termenul de taxonomie selectat în prezent folosind get_the_terms() - avem nevoie de el pentru a selecta butonul radio respectiv.

Observați că această funcție returnează o matrice. Acest lucru se datorează faptului că, în mod implicit, postarea poate avea orice număr de termeni asociați. După presupunerea noastră, postarea are cel mult un termen, așa că accesăm primul element de matrice. (Este ok dacă matricea este goală; vom obține null ca valoare curentă și nu va fi selectat niciun buton radio.)

Codul care emite HTML folosește custom_taxonomy ca denumire a butoanelor radio și ID-urile de termen corespunzătoare ca valori; Atributele ID-ului butonului radio sunt folosite doar pentru conectarea la etichetele de etichetă. Ca rezultat, obținem următoarea casetă meta personalizată:

Captură de ecran a funcției „adăugați o nouă etichetă” a taxonomiei exclusiviste personalizate acum disponibilă în bara laterală a tabloului de bord WordPress

Salvați valoarea taxonomiei atunci când postarea este salvată

În cele din urmă, trebuie să persistăm valoarea taxonomiei atunci când postarea este salvată. Pentru aceasta, putem folosi hook-ul save_post :

 add_action('save_post', 'save_custom_taxonomy'); function save_custom_taxonomy($post_id){ if ( isset( $_REQUEST['custom_taxonomy'] ) ) wp_set_object_terms($post_id, (int)sanitize_text_field( $_POST['custom_taxonomy'] ), 'custom_taxonomy'); }

Si asta e! Am terminat.

Acum știți cum să definiți o taxonomie personalizată care se va comporta ca taxonomia de categorie încorporată.

Notă: WordPress a acceptat o solicitare de funcții pentru a facilita comutarea exclusivității pentru taxonomiile personalizate. Cu toate acestea, biletul nu a văzut prea multă activitate de ceva vreme.

Învelire

Taxonomiile sunt o caracteristică foarte puternică și utilă în WordPress. Din cutie, le lipsește capacitatea de a face categorizare strictă a postărilor, dar ca și în cazul aproape orice în WordPress, taxonomiile și funcționalitățile aferente sunt extrem de personalizabile. Acest lucru ne permite să adăugăm această abilitate adesea necesară în câțiva pași.

Abordarea introdusă aici poate fi folosită și pentru a crea o interfață de utilizare și mai personalizată pe paginile de editare post pentru selecția termenilor de taxonomie.

Sper că ați găsit util acest tutorial rapid despre definirea taxonomiilor personalizate exclusive!