Preskoči na sadržaj
Pustili smo novi sajt sa mnogo novih opcija — AI Builder uskoro
BeoHosting
BeoHosting
WordPress

Vodič za WordPress custom post types

BeoHosting Tim··10 min čitanja
Vodič za WordPress custom post types

Šta su custom post types

WordPress platforma za sajt podrazumevano dolazi sa dva tipa sadržaja - postovi (blog članci) i stranice. Međutim, većina sajtova ima sadržaj koji ne pripada ni jednom od ovih tipova. Portfolio projekti, proizvodi, recenzije, događaji, nekretnine, recepti ili članovi tima su primeri sadržaja koji zahtevaju sopstvenu strukturu i prikaz. Custom post types ili prilagođeni tipovi sadržaja vam omogućavaju da kreirate nove tipove sadržaja sa sopstvenim poljima, taksonomijama i šablonima.

Custom post types su fundamentalan koncept u WordPress razvoju koji pretvara WordPress iz blogging platforme u potpun CMS (Content Management System). Svaki WordPress plugin koji dodaje novi tip sadržaja kao što su WooCommerce proizvodi, The Events Calendar događaji ili Portfolio plugini koristi custom post types ispod haube. Razumevanje CPT-ova vam daje punu kontrolu nad strukturom sadržaja na vašem sajtu.

Registrovanje custom post type-a

Funkcija register_post_type

Custom post type se registruje koristeći WordPress funkciju register_post_type koja se poziva unutar init hook-a. Funkcija prima dva argumenta - slug koji je interni identifikator tipa sadržaja i niz argumenata koji definišu ponašanje i izgled u admin panelu. Slug treba da bude u jednini, mali slova, bez razmaka i maksimalno 20 karaktera. Na primer za portfolio projekte slug bi bio project, za nekretnine property, za recepte recipe.

Ključni argumenti

  • labels: Niz labela koje WordPress koristi u admin interfejsu uključujući name za množinu, singular_name za jedninu, add_new za dugme dodavanja, edit_item za naslov stranice editovanja i search_items za pretragu.
  • public: Da li je tip sadržaja javno dostupan na frontend-u. Postavite na true za sadržaj koji posetioci treba da vide.
  • has_archive: Da li tip sadržaja ima arhivsku stranicu koja prikazuje sve stavke, slično blog stranici za postove.
  • supports: Koje WordPress funkcionalnosti su dostupne za ovaj tip sadržaja uključujući title, editor, thumbnail, excerpt, custom-fields, comments i revisions.
  • menu_icon: Dashicons ikonica koja se prikazuje u admin sidebar-u. WordPress dolazi sa 300 plus ikonica za različite namene.
  • rewrite: Definiše strukturu URL-a za ovaj tip sadržaja. Na primer slug portfolio kreira URL-ove poput vasajt.com/portfolio/naziv-projekta.
  • show_in_rest: Omogućava Gutenberg editor i REST API pristup. Postavite na true za moderne WordPress sajtove.

Advanced Custom Fields (ACF)

Zašto koristiti ACF

WordPress custom fields su osnovni mehanizam za dodavanje dodatnih podataka sadržaju ali nativni interfejs je nepraktičan. Advanced Custom Fields plugin transformiše iskustvo kreiranja sadržaja dodavanjem intuitivnih polja poput text input-a, textarea, selektora slika, datepicker-a, Google Maps polja, relationship polja i mnogo više. ACF je de facto standard u WordPress razvoju sa preko 2 miliona aktivnih instalacija i koriste ga agencije širom sveta.

Tipovi polja

ACF nudi preko 30 tipova polja organizovanih u kategorije. Osnovna polja uključuju text, textarea, number, email, URL i password. Polja za izbor su select, checkbox, radio button, button group i true/false. Polja za sadržaj su image, file, WYSIWYG editor, oEmbed za video i gallery. Relaciona polja su link, post object, page link, relationship i taxonomy. Layout polja su group, repeater za ponavljajuće sekcije, flexible content za modularne layout-e i clone. Repeater polje je posebno moćno jer omogućava kreiranje ponavljajućih struktura poput liste članova tima, sekcija sa ikonama ili tabele specifikacija.

Prikazivanje ACF polja

ACF pruža jednostavne PHP funkcije za prikazivanje vrednosti polja u temama. Funkcija get_field vraća vrednost polja dok the_field direktno ispisuje vrednost. Za slike, get_field vraća niz sa URL-om, širinom, visinom i alt tekstom. Za repeater polja, koristite have_rows i the_row u while petlji za iteraciju kroz sve redove. Za flexible content, koristite get_row_layout da odredite koji layout je u pitanju i prikažete odgovarajući šablon. ACF dokumentacija je izuzetno detaljna sa primerima za svaki tip polja.

Prilagođene taksonomije

Šta su taksonomije

Taksonomije su sistemi za klasifikaciju sadržaja. WordPress podrazumevano ima dve taksonomije - kategorije koje su hijerarhijske i tagove koji su ravni. Za custom post types, obično su potrebne prilagođene taksonomije. Na primer, portfolio projekti mogu imati taksonomiju tip projekta sa vrednostima poput web dizajn, branding i fotografija. Nekretnine mogu imati taksonomije za lokaciju, tip nekretnine i cenovni rang. Recepti mogu imati kuhinja, tip jela i nivo težine.

Registrovanje taksonomija

Funkcija register_taxonomy se poziva unutar init hook-a slično kao register_post_type. Prima tri argumenta - slug taksonomije, niz post tipova na koje se primenjuje i niz argumenata. Argument hierarchical određuje da li taksonomija funkcioniše kao kategorije sa parent-child odnosom ili kao tagovi ravna struktura. Labele definišu kako se taksonomija prikazuje u admin panelu. Rewrite argument kontroliše URL strukturu za arhivske stranice taksonomije.

Hijerarhijske vs ravne taksonomije

Hijerarhijske taksonomije prikazuju se kao checkbox lista u admin panelu sa mogućnošću kreiranja parent i child termova. Koristite ih za klasifikacije sa jasnom strukturom poput lokacija gde Srbija ima podkategorije Beograd, Novi Sad i Niš. Ravne taksonomije prikazuju se kao tag input polje gde kucate terme odvojene zarežima. Koristite ih za fleksibilne oznake poput tehnologija, veština ili karakteristika gde nema hijerarhijskog odnosa.

Template fajlovi za custom post types

WordPress template hijerarhija

WordPress koristi specifičnu hijerarhiju za određivanje koji template fajl će se koristiti za prikazivanje sadržaja. Za custom post type sa slug-om project, WordPress traži fajlove sledećim redom. Za pojedinačne stavke traži single-project.php pa single.php pa singular.php pa index.php. Za arhivsku stranicu traži archive-project.php pa archive.php pa index.php. Kreirajte specifične template fajlove za vaš CPT da biste imali potpunu kontrolu nad prikazom.

Single template

Single template prikazuje jednu stavku vašeg custom post type-a. Na primer single-project.php za portfolio projekt prikazuje naslov projekta, featured image, opis, ACF polja poput klijenta, datuma, URL-a projekta i galerije slika. Koristite WordPress petlju the_loop za pristup podacima posta i ACF funkcije za prilagođena polja. Dodajte navigaciju između projekata sa previous_post_link i next_post_link i sekciju sa srodnim projektima baziranu na taksonomiji.

Archive template

Archive template prikazuje listu svih stavki sa filtriranjem po taksonomiji. Na primer archive-project.php prikazuje grid portfolio projekata sa thumbnail-om, naslovom, kategorijom i kratkim opisom. Dodajte filter dugmad za taksonomije tako da posetioci mogu filtrirati projekte po tipu. Paginacija omogućava navigaciju kroz veliki broj stavki. Za napredni prikaz, koristite WP_Query sa prilagođenim argumentima za sortiranje, filtriranje i grupisanje stavki.

WP_Query za custom post types

Prilagođeni upiti

WP_Query klasa omogućava kreiranje prilagođenih upita za dohvatanje custom post type stavki sa specifičnim kriterijumima. Argument post_type definiše koji tip sadržaja dohvatate. posts_per_page kontroliše broj rezultata. orderby i order definišu sortiranje po datumu, naslovu, menu_order ili meta vrednosti. tax_query filtrira po taksonomiji sa mogućnošću kombinovanja više taksonomija koristeći AND ili OR operator. meta_query filtrira po custom field vrednostima sa operatorima poput jednako, veće od, manje od, LIKE i BETWEEN.

Primeri upita

Za prikazivanje poslednjih 6 portfolio projekata iz kategorije web dizajn sortirani po datumu, koristite WP_Query sa argumentima post_type project, posts_per_page 6, tax_query sa taksonomijom project_type i termom web-dizajn. Za prikazivanje nekretnina sa cenom između 50000 i 100000 evra, koristite meta_query sa ključem cena, tipom NUMERIC i operatorom BETWEEN. Uvek resetujte globalni post objekat sa wp_reset_postdata nakon prilagođenih upita da ne pokvarite glavnu WordPress petlju.

REST API i Gutenberg

REST API pristup

Sa argumentom show_in_rest postavljenim na true, vaš custom post type automatski dobija REST API endpoint na adresi vasajt.com/wp-json/wp/v2/slug. Ovo omogućava dohvatanje, kreiranje, ažuriranje i brisanje stavki putem API poziva što je osnova za headless WordPress pristup i JavaScript frontend-e. ACF polja se mogu izložiti u REST API-ju koristeći ACF to REST API plugin ili ručnom registracijom polja sa register_rest_field funkcijom.

Gutenberg blokovi

Sa show_in_rest omogućenim, vaš CPT koristi Gutenberg editor umesto klasičnog editora. Možete kreirati prilagođene Gutenberg blokove specifične za vaš tip sadržaja koristeći ACF Blocks koji omogućava kreiranje blokova sa PHP šablonima i ACF poljima bez React znanja. Na primer, za portfolio možete kreirati blok koji prikazuje grid izabranih projekata, ili za recepte blok koji formatira listu sastojaka i korake pripreme sa prilagođenim stilom.

Best practices za custom post types

Imenovanje i organizacija

Koristite prefiks za slug vašeg CPT-a da izbegnete konflikte sa drugim pluginima i WordPress ažuriranjima. Na primer umesto project koristite mojplugin_project. Grupisajte registraciju CPT-ova i taksonomija u zasebnu klasu ili fajl za lakše održavanje. Koristite konstante za slug-ove da izbegnete greške od tipfelera. Dokumentujte svaki CPT sa opisom namene, listom ACF polja i taksonomija.

Performanse

Svaki custom post type dodaje upite u bazu podataka pa izbegavajte kreiranje previše CPT-ova kada taksonomije mogu postići isti cilj. Na primer, umesto zasebnih CPT-ova za blog, vesti i tutoriale, koristite standardne postove sa kategorijama. ACF polja se čuvaju kao post meta u bazi podataka - za polja koja se često koriste u upitima, razmotrite kreiranje prilagođene tabele za bolje performanse. Keširajte kompleksne WP_Query upite koristeći transient API da smanjite opterećenje baze. Na nasim WordPress hosting rešenjima imamo optimizovano okruženje za sajtove sa custom post types i naprednim upitima sa dovoljno PHP memorije i brzim SSD diskovima za responzivno admin iskustvo.

Zaključak

Custom post types transformišu WordPress iz blog platforme u moćan CMS sposoban za upravljanje bilo kojim tipom sadržaja. Kombinacija register_post_type funkcije za kreiranje tipova sadržaja, ACF-a za prilagođena polja, prilagođenih taksonomija za klasifikaciju i template fajlova za prikaz daje vam potpunu kontrolu nad strukturom i prezentacijom sadržaja. Ovo znanje je osnova za profesionalni WordPress razvoj (započnite sa našim vodičem) i otvara mogućnosti za kreiranje složenih sajtova poput portfolio prezentacija, kataloga proizvoda, direktorijuma i poslovnih aplikacija.

BeoHosting Tim

10+ godina iskustva — Stručnjaci za web hosting i infrastrukturu

  • Web Hosting
  • WordPress Hosting
  • VPS
  • Dedicated Serveri
  • Domeni
  • SSL
  • cPanel
  • LiteSpeed
  • Linux administracija
  • DNS

Poslednje ažurirano: