Începând cu versiunea 2.9, WordPress a introdus posibilitatea de a utiliza tipuri de postări personalizate. Acum, cu versiunea 3.0, lucrurile sunt duse un pic mai departe cu opțiunea de a crea panouri pentru tipurile dvs. de postări personalizate. În acest tutorial, vă vom arăta cum să implementați tipuri de postări personalizate pe site-ul dvs. în site-ul dvs. WordPress.
Crearea tipurilor de postări personalizate – Utilizarea pluginurilor
Începând cu versiunea 3.0, WordPress nu are o interfață grafică (UI) încorporată pentru a crea tipuri de postări personalizate. Există doar două opțiuni pe care le putem folosi pentru a crea tipuri de postări personalizate: pluginuri sau codificarea lor directă în fișierul functions.php al temei dvs. Mai întâi, să vedem cum putem folosi pluginuri pentru a crea tipuri de postări personalizate.
Custom Post Type UI

Custom Post Type UI este un plugin dezvoltat de Brad Williams de la WebDevStudios care vă permite să creați cu ușurință tipuri de postări și taxonomii personalizate. Una dintre cele mai bune caracteristici ale acestui plugin este că generează cod pentru crearea tipurilor de postări personalizate, astfel încât să îl puteți lipi apoi în fișierul functions.php al temei dvs. Una dintre ciudățeniile acestui plugin este incapacitatea de a partaja taxonomii între toate tipurile dvs. de postări.

Din panoul Interfața Tipului de Postare Personalizată, faceți clic pe „Adaugă Nou”.

Apoi vi se oferă câteva opțiuni de completat. „Numele tipului de postare” este ceea ce va fi folosit de WordPress pentru a interoga toate postările de acest tip. „Eticheta” este ceea ce va fi afișat în bara laterală a panoului de administrare, la fel ca meniul obișnuit „Postare”. Dacă extindeți „Vizualizați opțiunile avansate”, veți vedea câteva opțiuni suplimentare pe care le puteți configura. Majoritatea sunt auto-explicative, cum ar fi „Public” și „Afișare UI”. Prima, atunci când este setată la true, permite afișarea meniului tipului de postare personalizat în bara laterală, iar cealaltă (afișare UI), atunci când este setată la true, generează panoul de meniu.
„Rewrite” este ceea ce permite tipului de postare personalizat să folosească URL-uri WordPress prietenoase cu SEO (Permalinks). „Custom Rewrite Slug” poate fi setat la orice doriți. WordPress va folosi acest slug pentru a genera permalink-urile. Deci, dacă avem example.com cu un slug de rescriere personalizat „movies”, permalink-ul tipului dvs. de postare personalizat ar arăta ca example.com/movies
Funcția „Query Var” din WordPress vă permite să interogați postările din tipul dvs. de postare personalizat. Deci, dacă am folosi exemplul dat mai devreme, pentru a accesa o postare cu titlul, My First Movie Post, care este scrisă sub tipul de postare Movies, putem introduce example.com/?movies=my-first-movie-post. Deci, variabila de interogare arată astfel: ?posttypename
În cele din urmă, puteți alege diferitele caracteristici suportate de tipul dvs. de postare personalizat, cum ar fi miniaturi/imagine de prezentare și extrase.

Crearea tipurilor de postări personalizate – Utilizarea fișierului Functions.php

Dacă preferați să folosiți tipuri de postări personalizate fără un plugin, atunci adăugați următorul cod în fișierul functions.php al temei dvs.:
// Creates Movies post type
register_post_type('movies', array(
'label' => 'Movies',
'public' => true,
'show_ui' => true,
'capability_type' => 'post',
'hierarchical' => false,
'rewrite' => array('slug' => 'movies'),
'query_var' => true,
'supports' => array(
'title',
'editor',
'excerpt',
'trackbacks',
'custom-fields',
'comments',
'revisions',
'thumbnail',
'author',
'page-attributes',)
) );
Să disecăm codul.
register_post_type( $post_type, $args ): Această funcție acceptă doi parametri, $post_type sau numele tipului de postare, și $args, un array de argumente.
label: Numele plural dat tipului de postare, care este afișat în bara laterală a panoului de administrare.
public: true/false. Permite ca interfața de administrare să fie populată cu postări de acest tip.
show_ui: true/false. Afișează sau ascunde o interfață implicită pentru gestionarea acestui tip de postare.
capability_type: Implicit: post Tipul de postare utilizat pentru verificarea permisiunilor de citire, editare și ștergere.
ierarhic: Dacă tipul de postare este ierarhic.
rewrite: true/false. Implicit: true Dacă este introdus argumentul slug, atunci numele slug-ului este prependat la postări.
query_var: true/false Setează numele tipului de postare ca variabilă de interogare.
suportă: Implicit: titlu și autor Setează diferite caracteristici de suport pe care le permite tipul de postare.
Vizitați WordPress Codex pentru mai multe informații despre register_post_type().
Afișarea postărilor de tip personalizat
Pentru a afișa postările din tipul dvs. de postare personalizat, adăugați următoarele coduri în buclă. Înlocuiți „name” cu numele tipului dvs. de postare. Notă: Nu trebuie să adăugați tipurile de postări personalizate în fișierul index.php. Puteți crea o pagină WordPress personalizată și puteți rula următoarea interogare în cadrul buclii.
$query = new WP_Query( 'post_type=name' );
Pentru a afișa postări din mai mult de un tip de postare, schimbați codul de mai sus în următorul. Schimbați „movies” cu numele tipului dvs. de postare personalizată.
$query = new WP_Query( array( 'post_type' => array( 'post', 'movies' ) ) );
Codul de mai sus va afișa toate postările din tipul de postare obișnuit (post) și din tipul de postare personalizat, filme.
Acesta este tot. Sperăm că acest tutorial v-a fost de ajutor și nu uitați să postați orice întrebări în comentarii.


Gaby Izarra
Ok, am o mică problemă și poate mă puteți ajuta... iată pagina mea de forum WordPress. Încerc să adaptez o listă de evenimente dintr-o altă temă pe cea pe care o folosesc.
http://wordpress.org/support/topic/php-query-for-custom-post-type-not-displaying-creating-theme-event-list?replies=1#post-5587886
dave
Am creat două tipuri de postări personalizate, dar doar prima apare pe pagina mea. Am adăugat asta
$query = new WP_Query( array( ‘post_type’ => array( ‘post’, ‘featured’, ‘latest’ )
) );
în fișierul meu de buclă, dar nimic. cum pot rezolva asta?
Jeroen
Știi cum pot adăuga tipuri de postări personalizate la pagina de arhivă a blogului și la fluxul rss?
Suport WPBeginner
Da, avem ghiduri pe ambele subiecte. Vă rugăm să consultați cum să creați o pagină de arhivă pentru tipuri de postări personalizate în WordPress și cum să adăugați tipuri de postări personalizate la fluxul RSS principal WordPress.
Admin
wizdom networks
În primul rând, articol grozav! Lucrez la implementarea tipurilor de postări personalizate prin cod. Demn de remarcat este faptul că documentația actuală WordPress (http://codex.wordpress.org/Function_Reference/query_posts) specifică faptul că funcția query_posts în general nu ar trebui utilizată și că hook-ul pre_get_posts este utilizat pentru a modifica interogările.
„Se recomandă insistent să folosiți filtrul pre_get_posts în schimb și să modificați interogarea principală verificând is_main_query”
Din nou, articol grozav, mulțumesc pentru distribuire.
Salutări.
Suport WPBeginner
Mulțumim Wisdom, am actualizat articolul cu WP_Query
Admin
Thom Abbott
WOW…pentru un novice care folosește WP pentru a-și gestiona site-ul, acesta nu este deloc un material pentru începători! Probabil va trebui să contactez un dezvoltator WP pentru a-mi configura pagina personalizată pe care o doresc.
Personal editorial
Tipurile de postări personalizate au fost create pentru ca dezvoltatorii să extindă funcționalitatea WordPress. Nu a fost niciodată destinat începătorilor.
Admin
mark shirley
query_posts( ‘post_type=movies’);
?>
Nu pot face să funcționeze asta în șablonul paginii mele de temă copil twentyeleven, unde aș pune-o pentru a prelua o pagină de filme. De fapt, sunt extrasele pe care le vreau cu adevărat. Mulțumesc Mark
muntzdesigns
Când folosiți acest plugin și adăugați codul de mai sus în loop.php, veți pierde controlul asupra categoriilor… tipul meu de postare personalizat este adăugat la toate categoriile… orice ajutor?
wpbeginner
@muntzdesigns Acesta este motivul pentru care aveți bucle multiple... bucla principală a blogului, archive.php, category.php etc... Pe un site cu design personalizat, va trebui să utilizați acest lucru pentru ca acest lucru să funcționeze corespunzător.
muntzdesigns
@wpbeginner@muntzdesigns Deci, adaug codul de mai sus la toate fișierele? (loop.php, archive.php și category.php). Mulțumesc.
wpbeginner
@muntzdesigns Nu. Adăugați codul doar pe paginile principale. Problema pe care ați avut-o a fost că tipurile de postări personalizate erau adăugate tuturor categoriilor… Trebuie să adăugați codul de mai sus doar la bucla principală. Apoi creați o nouă buclă pentru arhiva de categorii, arhiva de taxonomii, arhiva de autori…
PriyaVerma
Articol frumos, mulțumesc mult
dazuaga
Nu, m-am înșelat.
dazuaga
Lasă-mă pe mine: %categorie%/%tip%/%nume_postare% Cred că va funcționa
dazuaga
Ce face exact identificatorul de tip de conținut în pluginul CMS Press? Caut o modalitate de a prelungi slug-ul categoriei la tipul de postare (exemplu.com/categorie/tip_postare/nume_postare), dar când folosesc %categorie%/%identificator%/%nume_postare% în identificatorul de tip de conținut se transformă automat în acest fel: %categorieidentificatornume_postare%
murphymakes
informații excelente ca de obicei. mulțumesc
whimba
I like Custom Post Type UI. It’s light and easy to use but is limited in functionality. So I created my own – http://wordpress.org/extend/plugins/mp-former/. You can try it
simplywendz
Acesta este un tutorial grozav pentru crearea unei postări personalizate în WordPress. Pașii sunt detaliați, oricine ar putea urma cu ușurință. Este un ajutor mare, mare!
hoss9009
Mă întrebam și eu asta!!
Cupbearer
Uau, am reușit să fac să funcționeze totul la CMS Press, dar nu mi-am dat seama cum să-l fac să apară în postări. Presupun că există de atât de mult timp încât toată lumea presupune că ar trebui să fie deja cunoscut. Răspuns perfect pentru a face tipul meu de postare personalizată să apară în buclă.
Jerry Craig
Copero
Noel Boaz
Mulțumesc, m-a ajutat mult să-mi pun tipul de postare personalizată pe pagina principală. Cu siguranță am salvat în marcaje, mulțumesc.
Ed
Am încercat pluginul, foarte impresionant. Cu toate acestea, încerc să obțin un atribut de pagină care să apară din atributele 'Pagini' ale temelor mele, adică posibilitatea de a folosi o opțiune de pagină pe lățime completă. Trebuie să presupun că pluginul dvs. extrage atribute doar din layout-urile de tip Post, nu din layout-urile de tip Page? Tot ce vreau este să am opțiunea de a seta un post la un șablon complet, predeterminat.
Oricum, treabă excelentă – voi folosi asta mult.
Salutări
Ed
Simon
Am încercat metoda cu pluginul, dar nu am reușit să afișez postarea. Poate pentru că nu am putut găsi fișierul loop.php.
Oricum, mulțumesc mult, sunt destul de sigur că va funcționa în curând.
Vreau să spun că un lucru super grozav pe care l-ar fi minunat să-l facem cu WordPress este să avem posibilitatea de a crea vizualizări personalizate de conținut, la fel ca în Drupal cu modulul views.
Știu că există un plugin numit pods și pods cms care ar trebui să facă acest lucru posibil. Poate ați putea cere dezvoltatorului să vă ajute într-o postare pe wpbeginner dacă nu înțelegeți deloc, ca mine. Sunt sigur că multor oameni le-ar plăcea asta. Prezentarea vizualizărilor este ceea ce face cu adevărat un cms un cms cu adevărat dinamic, până la urmă.
Personal editorial
loop.php s-ar putea să nu existe în tema ta. Bucla poate fi găsită și în index.php, archive.php, category.php etc. Poți crea și o buclă personalizată dacă dorești.
Admin
Peter
Tutorial bun, mulțumesc pentru distribuire.
Am o întrebare legată de asta.
Am creat un tip de postare personalizat prin functions.php (un calendar) care are o cutie meta personalizată în interfața de administrare. Această cutie meta folosește jQuery pe un câmp.(http://jqueryui.com/demos/datepicker/).
Pentru ca acest datepicker să funcționeze, trebuie să încorporez scripturile necesare.
add_action(‘admin_enqueue_scripts’,’enqueue_my_scripts’);
funcționează, dar scripturile mele sunt încărcate pe întreaga interfață de administrare. (ceea ce interferează cu jQuery-ul implicit al administrării WP)
Așa că ceea ce am nevoie este hook-ul pentru tipul meu de postare personalizat.
asta:
add_action(‘register_post_type’,’enqueue_my_scripts’);
nu funcționează deoarece register_post_type nu este un hook.
Așadar, care este hook-ul pentru un post_type personalizat?
Amanda
Ați putea încerca să adăugați următoarele la definiția funcției dvs. înainte de a înregistra scriptul:
if(is_admin()) return;Deci, ceva de genul:
function some-function(){
// nu avem nevoie de asta pe paginile de administrare, deci...
if(is_admin()) return;
// înregistrează scriptul personalizat
wp_enqueue_script( 'some-script' );
}
Evan
Cum fac ca fiecare tip de conținut să apară în buclă? Adică, este aproape ca Tumblr. Dacă postez o imagine… trebuie să personalizez codul din buclă – același lucru dacă postez un link.
Personal editorial
Puteți vedea în postare, există o opțiune de a afișa atât tipuri de postări personalizate, cât și postări într-un singur ciclu…
Admin
Michael
Nu reușesc să fac bucla să funcționeze pentru a interoga postările de tipul meu personalizat. Exemplul dvs. pare suficient de ușor, așa că am încercat următoarele $var = query_posts( ‘post_type=sponsor’);
Apoi am început un ciclu
while ($var ->have_posts()) : $var ->the_post();
Fă lucruri
endwhile;
Acesta returnează o eroare PHP:
Fatal error: Call to a member function have_posts() on a non-object in single-sponsor.php on line 22
linia 22 este linia cu bucla while.
Idei? Ce fac greșit?
Romero
Am încercat să creez o etichetă pentru câmp personalizat și, când folosesc get_the_tags în bucla de tip personalizat, nu afișează nimic.
Aveți sugestii?
Ian
Sunt foarte entuziasmat de această nouă funcționalitate ^-^ Ai făcut un videoclip bun. Deși în exemplul tău, de ce să folosești tipuri de postări personalizate și nu doar să inventezi o categorie de cărți și filme pentru postări? Astfel economisești toată bătaia de cap a unui tip de postare personalizată.
Personal editorial
În primul rând, îți permite să organizezi lucrurile diferit. În al doilea rând, poți avea un panou de scriere complet diferit cu opțiuni diferite. Permite mult mai multe personalizări…
Admin
Sandra
Mulțumesc pentru acest articol grozav! Sunt un începător adevărat în wp și poate mă poți ajuta cu această întrebare:
Este posibil să afișezi arhivele unui tip de postare personalizat în bara laterală, așa cum se poate face folosind pluginul „display archives by cat” de la kwebble?
Personal editorial
Da, este posibil să afișați tipuri de postări personalizate ca arhive. Creați doar o buclă personalizată în bara laterală pentru a afișa postări sau categorii dintr-un anumit tip de postare.
Admin
lukeMV
Există ghiduri ușor de înțeles despre cum să adăugați opțiuni la postările personalizate? De exemplu, dacă un film este dramă, comedie, horror… să aveți acele opțiuni ca niște casete de bifat ÎN panoul de editare al postării personalizate? Nu reușesc să găsesc un ghid sau un plugin pentru asta.
Paul
Salut, A fost un articol grozav. Speram că poate știi răspunsul la întrebarea mea.
În ultimele câteva rânduri ai:
aceasta returnează toate postările și tipurile de postări numite filme.
Știi cum să returnezi atât tipurile de postări numite „filme”, cât și postările din categoria „filme”, dar să excluzi toate celelalte postări care nu au această categorie??
Personal editorial
Ați folosi parametrii de categorie pentru query_posts – http://codex.wordpress.org/Function_Reference/query_posts
Admin
Walter
Poți să faci un pas înapoi: De ce am nevoie de tipuri de postări personalizate în primul rând? Care este cazul de utilizare?
Personal editorial
Tipurile de postări personalizate sunt bune pentru utilizatorii care folosesc WordPress pentru mai mult decât un blog, de exemplu, un CMS. Să spunem că doriți să aveți un site care conține portofoliul și blogul dvs. Evident, nu doriți ca blogurile dvs. să arate la fel ca portofoliul dvs. Atunci tipurile de postări personalizate sunt utile. Aceasta este o caracteristică foarte versatilă pentru a duce WordPress la nivelul următor. Pentru utilizatorul mediu de blog, probabil că nu au nevoie de tipuri de postări personalizate.
Admin
Tracy B.
Bine, dar încă încerc să înțeleg diferența dintre asta și simpla categorisire a lucrurilor. Am creat multe site-uri pentru oameni unde pagini separate fac lucruri precum listarea doar a categoriei „evenimente curente” și alta a categoriei „proiecte” sau orice altceva. Cum este asta mai bun?
Personal editorial
Acest lucru este mai bun în ceea ce privește organizarea. Puteți avea taxonomii personalizate, panou de scriere etc. pentru un tip de postare specific.
Chris
Nu mă pot abține să nu cred că acest lucru ar fi fost mai util dacă ați fi arătat ceva ieșit din comun cu tipurile de postări, în loc să folosiți vechiul exemplu cu „filme și cărți”.
Ce zici de un sideblog folosind tipuri de postări, sau ceva puțin mai practic? Tot ce face acest lucru este să reafirme ceea ce WP Codex va avea în cele din urmă, dacă nu este deja acolo.
Personal editorial
Ne pare rău că te simți așa Chris. WP Codex nu va avea un videoclip care să îți arate cum să faci asta. Nu contează ce nume folosim pentru tipurile de postări personalizate, ideea este cum să le adăugăm. Nu vom crea un site extraordinar doar pentru a scrie o postare despre tipul de postare personalizată. Dacă cauți acea cunoaștere, probabil că e mai bine să o faci singur. Acest blog încă trebuie să satisfacă nevoile utilizatorilor de nivel începător, de aceea am împărtășit metoda cu pluginul.
Admin
Kevin Elliott
Va funcționa asta pe WordPress 2.9 sau este doar pentru 3.0?
Am încercat să folosesc 3.0, dar s-a întâmplat o ciudățenie unde niciunul dintre pluginurile mele nu s-a activat, chiar și cele care spuneau că s-au activat. A fost foarte ciudat!
-Kevin
Personal editorial
Acest lucru ar funcționa cu 3.0, așa că folosiți-l doar pe 3.0. Încercați să reinstalați WordPress 3.0, rulăm câteva site-uri pe el.
Admin
Marc
Tocmai am vizionat videoclipul…
Este adevărat că trebuie să edităm fișiere php (= codificare manuală) pentru ca totul să funcționeze?
Personal editorial
Nu, trebuie să faci una sau alta. În videoclipul nostru, am arătat ambele modalități. Fie poți face codificarea manuală, fie prin plugin.
Admin
Marc
Allright, I see, thnx!
Atunci presupun că ai început pe calea codului greu? La momentul respectiv, văzând doar toate chestiile legate de codare, am renunțat. Prin urmare, nu am văzut probabil calea plugin-ului…
Rilwis
Articol foarte bun. Pluginul Custom Post Type UI are opțiuni foarte similare cu codul PHP brut pentru înregistrarea tipurilor de postări, ceea ce este grozav pentru dezvoltatori.
Mulțumesc pentru introducerea multor pluginuri utile pentru lucrul cu tipuri de postări personalizate.
Kaye Media
Articol grozav, aștept cu nerăbdare Wp3 =)
Bryan
Mă bucur că Wordpress a integrat tipurile de postări personalizate direct în framework-ul wp. Cu toate acestea, nu văd cum este mai bun decât utilizarea pluginurilor deja disponibile, cum ar fi Magic Fields sau Flutter. Cu acele pluginuri obții același efect plus câmpuri personalizate ușor de configurat, cu multe tipuri diferite și flexibilitate în modul de introducere și afișare a datelor tale. Suportă wp 3.0 ceva de genul acesta imediat?
Personal editorial
Puteți crea o interfață pentru câmpuri personalizate și aproape orice în backend cu tipuri de postări personalizate. Aveți dreptate că acele pluginuri fac lucrurile foarte ușoare pentru utilizatori, dar dacă oricare dintre acele pluginuri eșuează în dezvoltare, atunci nu aveți de ales.
Admin
Bryan
Corect. M-am jucat puțin cu versiunea beta, dar nu atât cât ar trebui, presupun. Ar fi interesant dacă ar merge mai mult în acea direcție. De când am devenit experimentat în utilizarea acestor plugin-uri, aproape că nu mai fac un site acum fără unul.
Deci ar fi grozav dacă toate aceste instrumente ar fi disponibile și gestionate în cadrul aplicației originale. Pot vedea că ar duce la o mai bună gestionare a backend-ului și ar încuraja mai mulți oameni să contribuie la ea, mai degrabă decât un grup mai mic care să susțină un anumit plugin.
Ian
Cred că au lăsat intenționat o parte din codul tipului de postare personalizată ca și cod. Pentru a permite utilizatorului mediu să se ocupe de el.
Abdul Wahid
Acesta este un articol grozav
ravalde
Nu pot afișa nicio taxonomie în twentyeleven, nici nu pot găsi un tutorial care să-mi arate de la început până la sfârșit, toate par să se concentreze pe twentyten și pe buclă