Skirtingi įrašų tipai

Šiuo metu kuriame turistinį blogą/portalą apie turistines vietas ir t.t. su WordPress.

Visi įrašai skelbiami su datomis, bet kurortų aprašymus norime pateikti be datų ir pateikti juos panašiai kaip puslapius („page“). Bėda, kad puslapiai nenaudoja kategorijų, todėl negalime priskirti tam tikrai šaliai/valstybei, o mūsų bandyti įskiepiai tinkamai neveikia, kadangi neįterpia kategorijos pavadinimo į URL. Nusprendėme, kad reikia papildomo post type ir poto per CSS bandyti paslėpti įrašo datą. Taip galėtume valdyti atskirus pranešimų tipus ir skirtingai juos apipavidalinti, bet priskirti į tas pačias kategorijas.

Būčiau dėkingas jei galėtumėte pateikti daugiau informacijos apie šios problemos sprendimo būdą.

Šarūnas

Iš esmės jūsų sprendimas čia naudoti custom post type (toliau – CPT) yra teisingas. Jei kalbėtume tik apie kategorijos priskyrimą puslapiams (page), tai yra padaroma gana nesunkiai (žr. kodo gabaliuką žemiau), bet kadangi puslapiai yra hierarchinis turinio tipas, jų URL formuojamas kitu principu, nei įrašų ir kategorijos pavadinimo ten paprastai neįdėsite. Jei vistik norite, kad puslapiai būtu priskiriami toms pačioms kategorijoms, kaip ir įrašai, reikėtų functions.php faile įterpti tokį kodo gabalėlį.

Kalbant apie CPT, jis sukuriamas naudojant register_post_type funkciją. Žemiau pateikiu labai minimalistinį kodo gabaliuką pritaikytą jūsų atvejui. Jis tiesiog sukuria naują įrašų tipą „resort“ ir jam priskiria kategorijų taksonomiją.

WordPress leidžia atskiriems įrašų tipams kurti atskirus šablonus, taigi datos nereikės slėpti per CSS – tiesiog sukurkite atskirą šabloną single-{posttype}.php (šiuo atveju – single-resort.php) ir galite norodyti nors ir visiškai skirtingą HTML vaizdavimą, nei įprastų įrašų. Analogiškai galima turėti atskirą įrašų sąrašo vaizdavimą – archive-{posttype}.php (t.y. archive-resort.php). Plačiau apie šablonų hierarchiją galite paskaityti WordPress dokumentacijoje.

Šiek tiek komplikuotas bus kategorijų archyvas – standartiškai jame bus rodomi tik ‘post’, bet ne ‘resort’ tipo įrašai. Jei vistik norisi kartu rodyti abu įrašų tipus, tai galima išspręsti žemiau pateikto kodo gabaliuko pagalba.