Vodič za WordPress custom post types

Šta su custom post types
WordPress platforma za sajt podrazumijevano 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 primjeri sadržaja koji zahtijevaju vlastitu strukturu i prikaz. Custom post types ili prilagođeni tipovi sadržaja vam omogućavaju da kreirate nove tipove sadržaja sa vlastitim 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. Razumijevanje CPT-ova vam daje punu kontrolu nad strukturom sadržaja na vašem sajtu.
Registriranje custom post type-a
Funkcija register_post_type
Custom post type se registrira 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 definiraju ponašanje i izgled u admin panelu. Slug treba da bude u jednini, mali slova, bez razmaka i maksimalno 20 karaktera. Na primjer za portfolio projekte slug bi bio project, za nekretnine property, za recepte recipe.
Ključni argumenti
- labels: Niz labela koje WordPress koristi u admin sučelju uključujući name za množinu, singular_name za jedninu, add_new za gumb dodavanja, edit_item za naslov stranice editiranja i search_items za pretragu.
- public: Da li je tip sadržaja javno dostupan na frontend-u. Postavite na true za sadržaj koji posjetitelji 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: Definira strukturu URL-a za ovaj tip sadržaja. Na primjer 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 sučelje je nepraktičan. Advanced Custom Fields plugin transformira 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 milijuna aktivnih instalacija i koriste ga agencije širom svijeta.
Tipovi polja
ACF nudi preko 30 tipova polja organiziranih 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 vrijednosti polja u temama. Funkcija get_field vraća vrijednost polja dok the_field direktno ispisuje vrijednost. 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 iznimno detaljna sa primjerima za svaki tip polja.
Prilagođene taksonomije
Šta su taksonomije
Taksonomije su sustavi za klasifikaciju sadržaja. WordPress podrazumijevano ima dvije taksonomije - kategorije koje su hijerarhijske i tagove koji su ravni. Za custom post types, obično su potrebne prilagođene taksonomije. Na primjer, portfolio projekti mogu imati taksonomiju tip projekta sa vrijednostima poput web dizajn, branding i fotografija. Nekretnine mogu imati taksonomije za lokaciju, tip nekretnine i cjenovni rang. Recepti mogu imati kuhinja, tip jela i nivo težine.
Registriranje 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 primjenjuje i niz argumenata. Argument hierarchical određuje da li taksonomija funkcionira kao kategorije sa parent-child odnosom ili kao tagovi ravna struktura. Labele definiraju kako se taksonomija prikazuje u admin panelu. Rewrite argument kontrolira 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 gdje Hrvatska ima podkategorije Zagreb, Novi Sad i Niš. Ravne taksonomije prikazuju se kao tag input polje gdje kucate terme odvojene zarežima. Koristite ih za fleksibilne oznake poput tehnologija, vještina ili karakteristika gdje 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 sljedeć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 primjer 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 primjer archive-project.php prikazuje grid portfolio projekata sa thumbnail-om, naslovom, kategorijom i kratkim opisom. Dodajte filter dugmad za taksonomije tako da posjetitelji 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 definira koji tip sadržaja dohvatate. posts_per_page kontrolira broj rezultata. orderby i order definiraju sortiranje po datumu, naslovu, menu_order ili meta vrijednosti. tax_query filtrira po taksonomiji sa mogućnošću kombiniranja više taksonomija koristeći AND ili OR operator. meta_query filtrira po custom field vrijednostima sa operatorima poput jednako, veće od, manje od, LIKE i BETWEEN.
Primjeri upita
Za prikazivanje posljednjih 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 cijenom između 50000 i 100000 eura, koristite meta_query sa ključem cijena, tipom NUMERIC i operatorom BETWEEN. Uvijek resetirajte 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 umjesto 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 primjer, 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 izbjegnete konflikte sa drugim pluginima i WordPress ažuriranjima. Na primjer umjesto 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 izbjegnete greške od tipfelera. Dokumentirajte svaki CPT sa opisom namene, listom ACF polja i taksonomija.
Performanse
Svaki custom post type dodaje upite u bazu podataka pa izbjegavajte kreiranje previše CPT-ova kada taksonomije mogu postići isti cilj. Na primjer, umjesto zasebnih CPT-ova za blog, vijesti 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 rješenjima imamo optimizirano 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 transformiraju 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 Team
10+ godina iskustva — Stručnjaci za web hosting i infrastrukturu
- Web Hosting
- WordPress Hosting
- VPS
- Dedicated Serveri
- Domeni
- SSL
- cPanel
- LiteSpeed
- Linux administracija
- DNS
Posljednje ažuriranje: