De multe ori, veți face o alegere și veți decide cum veți implementa o anumită funcționalitate. WordpPress are o abordare destul de flexibilă pentru aproape orice problemă și în acest tutorial vom analiza cât de flexibil este API personalizat post tip.
Există multe lucruri pe care le puteți face cu tipurile personalizate de posturi, inclusiv generarea și gestionarea anumitor postări pe anumite pagini personalizate, prezentări de diapozitive, galerii, elemente de portofoliu chiar. Unii oameni nu știu că există încă, alții nu înțeleg pe deplin opțiunile și cum să le folosească. Vom încerca, în următorii pași, să construim un plugin specific, care să folosească cele mai bune tipuri de posturi personalizate. Pentru a fi mai exact, vom construi un plugin care creează un tip de post personalizat, care creează și gestionează în mod dinamic, alte tipuri de posturi personalizate (este ca inițierea aici!).
Înainte de a începe chiar să începem, vom examina detaliat ceea ce vom construi în acest tutorial, cum și de ce. Scopul acestui tutorial este de a vă ajuta să vă familiarizați cu tipurile personalizate de posturi în WordPress.
Pentru a face acest lucru, vom construi un plugin care creează un tip principal de post personalizat, apoi utiliza posturile din tipul postului personalizat, cu o casetă de metadate pentru setări, pentru a crea tipuri suplimentare de posturi personalizate personalizate pe baza opțiunilor de interfață meta-box. Acest lucru vă va ajuta să înțelegeți în detaliu toate opțiunile de post personalizate și unele dintre posibilitățile pe care le poate oferi. În scopul acestui tutorial, se presupune că aveți un server Apache care funcționează cu PHP și MySQL, și WordPress instalat, pentru a putea testa pluginul pe o versiune 3.0+ a WordPress.
Fiecare post va fi interpretat ca un nou tip de post personalizat și vom salva opțiunile de configurare ale fiecărei postări în câmpurile personalizate, utilizând o casetă meta cu multe formulare, casete de selectare, casete dropdown și casete de text care vor stoca și afișa de date, făcând-o ușor pentru utilizator să modifice orice.
Deoarece pluginul are 450 de linii de cod, nu fiecare linie de cod va exista în tutorial deoarece majoritatea codului se repetă și doar variabilele sunt diferite. Dar toate funcționalitățile pluginului vor fi explicate, iar codul sursă dat ca exemplu.
Dacă vrem să ajungem la funcționalitatea tipului postului personalizat, funcționalitatea metabox și dorim să salvăm date cu privire la acțiunea de actualizare sau publicare, avem nevoie de cârlige și trebuie să le implementăm în mod specific pentru a obține efectul dorit.
add_action ('save_post', 'cpt_save_postdata'); add_action ('add_meta_boxes', 'cpt_add_meta_boxes'); add_action ('init', 'init_custom_post_types');
Vom avea nevoie doar de trei cârlige în acest tutorial, nici un filtru, nimic altceva la funcționalitatea de bază. Mai întâi avem nevoie de un cârlig pentru a genera tipul de post personalizat în funcția de apel invers. Pentru asta vom folosi init
cârligul de etichetare și funcția de apel inversat cu numele de 'init_custom_post_types'
. Aici se intampla toata magia, adica aici decidem tipurile de posturi personalizate si unde le facem dinamice prin extragerea valorilor din baza de date si generarea de tipuri personalizate de posturi dinamice intr-o bucla. Această parte a codului va fi discutată ulterior.
Un alt cârlig de care avem nevoie este 'add_meta_boxes'
cârlig de etichetare care indică funcția de apel invers 'cpt_add_meta_boxes'
și este folosit pentru a genera metadatele din interiorul tipului principal de post personalizat care generează toate celelalte tipuri de posturi personalizate. Aici creăm formularele care vor stoca și actualiza datele pe care trebuie să le manipulăm pentru a ne crea funcționalitatea.
Ultimul cârlig pe care îl folosim este 'Save_post'
cu funcția de apel invers 'Cpt_save_postdata'
și scopul salvării datelor postate de meta-box. Atunci când pagina principală a postului personalizat este trimisă în panoul de administrare de către utilizator, toate câmpurile de formular sunt trimise și acesta este cârligul pe care îl folosim pentru a apuca acel conținut și pentru a-l salva / actualiza în baza de date pentru o utilizare ulterioară.
În primul rând, trebuie să creați un tip general de post personalizat, care va gestiona întregul conținut dinamic. Pentru a face acest lucru, mai întâi vom crea un tip de postare personalizat generic folosind date codate ca în exemplul următor. Mai intai creem etichetele. Parametrul etichetelor este una dintre valorile principale ale argumentului care este interpretată ca o matrice. Valorile matricei sunt date de identificatorii lor, în mod specific Nume
pentru numele principal general al tipului de post personalizat care este, de obicei, un șir plural al numelui tipului postului personalizat, singular_name
pentru numele obiectului personalizat de tip post în singular, adăuga nou
adăugați un nou text de șir, add_new_item
care este implicit adăugarea unui text post / pagină nou, edit_item
ca text implicit pentru editare post sau pagină, toate obiectele
este folosit pentru afișarea tuturor textului personalizat al tipurilor de posturi la care se solicită (exemplu: toate mașinile), view_items
și search_items
sunt folosite la fel ca exemplul precedent doar pentru scopurile evident diferite, nu a fost gasit
, not_fount_in_trash
, parent_item_colon
sunt, de asemenea, texte de înlocuire utilizate pentru anumite pagini ale funcțiilor de postări (tipuri personalizate de posturi) pe care ați putea dori să le modificați pentru orice tip de post personalizat pe care îl creați.
În exemplul următor, $ etichete
array utilizează CPT pentru a înlocui textul post implicit / postări / pagină / pagini. Cred că nu este necesar pentru unii cititori, ci doar pentru a fi sigur că nu-mi e dor de idee, CPT înseamnă personalizat Post Type și este și va fi folosit în mai multe moduri în timpul tutorialului.
O notă importantă, acest cod este inserat în init_custom_post_types
pentru a funcționa corect.
$ etichete = array ('name' => _x ('CPT', 'post type general name'), 'singular_name' => "Adăugați noi CPT", "CPT"), "add_new_item" => __ ("Adăugați un nou tip de postare"), "edit_item" => ), 'all_items' => __ ('Tot CPT'), 'view_item' => __ (' CPT a găsit ")," not_found_in_trash "=> __ (" CPT nu a fost găsit în coșul de gunoi ")," parent_item_colon "=>", "nume_menu" => > etichete $, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'rewrite' => true, > 'post', 'has_archive' => true, 'hierarchical' => false, 'menu_position' => null, 'supports' => array ('title'));
Matricea principală necesară pentru generarea tipului de post personalizat este $ args
array, utilizat în scopul unic de a seta opțiunile principale ale tipului de post personalizat și de a gestiona funcționalitatea acestuia.
public
- o variabilă booleană, adevărată sau falsă, care reprezintă disponibilitatea tipului de post personalizat, dacă este publică pentru interfața de administrare sau pentru utilizatorii din front-end în temă.publicly_queryable
- din nou o valoare booleană care stabilește dacă partea frontală are capacitatea de a interoga rezultatele tipului de post personalizat.show_ui
- un boolean care afirmă dacă conținutul de admin implicit este generat pentru tipul de post personalizat sau nu.show_in_menu
- încă o altă variabilă booleană care necesită show_ui
pentru a fi adevărat pentru a funcționa, deoarece scopul său este de a arăta sau de a nu afișa tipul postului în meniul panoului de administrare WordPress.query_var
- creează o cheie de interogare var pentru acest tip de post particularizat. Puteți să-l utilizați ca boolean sau șir, dacă este adevărat, este implicit, false dezactivează interogarea var cheie cheie și șirul stabilește o cheie personalizată. În exemplul nostru, vom folosi valoarea implicită și l-am setat la true.rescrie
- acest lucru împiedică rescrierea pentru acest tip de postare.capability_type
- în cele din urmă, un șir care stabilește dacă tipul de post personalizat este un post sau o pagină, într-un șir de text simplu. Folosim postarea.has_archive
- acest parametru permite arhive post și utilizări post_type
în mod prestabilit, ca arhiva slug.ierarhic
- un boolean care stabilește dacă tipul de post este ierarhic sau nu, adică dacă permite părinților să fie specificați sau nu.menu_position
- un șir reprezentând poziția pentru tipul de post care să fie afișată în meniu. Valorile variază de la 5 până la 100.suporturi
- această valoare are din nou o valoare de matrice, de data aceasta cu valori precum titlu, editor, miniatură, câmpuri personalizate, trackback-uri, revizuiri, atribute de pagină și postformate.Matricea principală args este folosită în următorul register_post_type
funcția care are primul parametru personalizat post type name (în cazul nostru CPT) și a doua $ args
variabil.
Aceasta acoperă destul de mult crearea tipului nostru principal de posturi personalizate, cu exemplul dat și explicat mai sus.
În primul rând, am acoperit cârligele, unul dintre cârlige a pus în aplicare o etichetă care avea o funcție de apel invers făcut special pentru implementarea meta box. Această funcție arată astfel:
funcția cpt_add_meta_boxes () add_meta_box ('cpt_meta_id', 'Setările tipului postului personalizat', 'cpt_inner_custom_box', 'CPT', 'normal');
În interiorul funcției pe care o avem add_meta_box
funcția care are parametrii impliciți pentru implementarea unei casete meta, și anume, idul metabox unic, titlul acesteia, funcția de retur și tipul postului personalizat în care ar trebui să fie aplicat, și nu în ultimul rând poziția (suntem o să-l punem la normal așa cum o dorim chiar sub editor).
Asta pentru generarea folosind API-ul, dar cu ce îl umplem? Ei bine, trebuie să o completăm cu toate opțiunile discutate anterior de la pasul 3 și pentru a face acest lucru, vom crea câmpuri de formular și le vom umple cu date în funcție de tipul lor.
Utilizăm casetele de selectare pentru argumentele matricei care necesită valori booleene. Verificat este adevărat și necontrolat este fals.
name = "cp_publicly_queryable" /> Public Queryable
Unele argumente array necesită mai multe elemente pentru a alege de la. Pentru aceasta folosim cutii de tip drop-down cu valori hardcodate care se potrivesc nevoilor noastre.
Poziția meniului:
Vom păstra valorile șirului în aceste câmpuri de formular.
Nume general:
Pasul 5 Salvarea datelor
Tot ceea ce formează datele transmise din caseta meta trebuie să fie salvat în baza de date, astfel încât acesta să poată fi folosit ulterior pentru a face dinamic tipul de post dinamic și, de asemenea, în funcționalitatea căsuței meta. Pentru a salva datele pe care le avem
cpt_save_postdata
funcționează ca o funcție de apel invers creată pentru a face acest lucru. Dar această funcție trebuie să fie umplută cu funcționalitate care salvează datele. Deci, cum salvăm datele pentru toate aceste elemente. Raspunsul usor si cel mai evident este campurile personalizate. Vom păstra toate aceste valori în câmpurile personalizate ale postului individual de tip post particularizat, deoarece este mult mai ușor de gestionat mai târziu când le extragem pe baza unui anumit mesaj interogat.Aici este tot codul necesar pentru a rula în funcția specificată anterior pentru a salva toate datele de care avem nevoie.
postare globală $; dacă $ _POST ['cpt-hidd'] == 'adevărat') $ cp_public = get_post_meta ($ post-> ID, 'cp_public', true); $ cp_publicly_queryable = get_post_meta ($ post-> ID, 'cp_publicly_queryable', true); $ cp_show_ui = get_post_meta ($ post-> ID, 'cp_show_ui', true); $ cp_show_in_menu = get_post_meta ($ post-> ID, 'cp_show_in_menu', adevărat); $ cp_query_var = get_post_meta ($ post-> ID, 'cp_query_var', adevărat); $ cp_rewrite = get_post_meta ($ post-> ID, 'cp_rewrite', adevărat); $ cp_has_archive = get_post_meta ($ post-> ID, 'cp_has_archive', adevărat); $ cp_hierarchical = get_post_meta ($ post-> ID, 'cp_hierarchical', true); $ cp_capability_type = get_post_meta ($ post-> ID, 'cp_capability_type', true); $ cp_menu_position = get_post_meta ($ post-> ID, 'cp_menu_position', true); $ cp_s_title = get_post_meta ($ post-> ID, 'cp_s_title', true); $ cp_s_editor = get_post_meta ($ post-> ID, 'cp_s_editor', true); $ cp_s_author = get_post_meta ($ post-> ID, 'cp_s_author', true); $ cp_s_thumbnail = get_post_meta ($ post-> ID, 'cp_s_thumbnail', true); $ cp_s_excerpt = get_post_meta ($ post-> ID, 'cp_s_excerpt', true); $ cp_s_comments = get_post_meta ($ post-> ID, 'cp_s_comments', true); $ cp_general_name = get_post_meta ($ post-> ID, 'cp_general_name', true); $ cp_singular_name = get_post_meta ($ post-> ID, 'cp_singular_name', true); $ cp_add_new = get_post_meta ($ post-> ID, 'cp_add_new', adevărat); $ cp_add_new_item = get_post_meta ($ post-> ID, 'cp_add_new_item', true); $ cp_edit_item = get_post_meta ($ post-> ID, 'cp_edit_item', true); $ cp_new_item = get_post_meta ($ post-> ID, 'cp_new_item', adevărat); $ cp_all_items = get_post_meta ($ post-> ID, 'cp_all_items', true); $ cp_view_item = get_post_meta ($ post-> ID, 'cp_view_item', true); $ cp_search_items = get_post_meta ($ post-> ID, 'cp_search_items', true); $ cp_not_found = get_post_meta ($ post-> ID, 'cp_not_found', true); $ cp_not_found_in_trash = get_post_meta ($ post-> ID, 'cp_not_found_in_trash', adevărat); $ cp_parent_item_colon = get_post_meta ($ post-> ID, 'cp_parent_item_colon', true); update_post_meta ($ post-> ID, 'cp_public', $ _POST ['cp_public'], $ cp_public); update_post_meta ($ post-> ID, 'cp_publicly_queryable', $ _POST ['cp_publicly_queryable'], $ cp_publicly_queryable); update_post_meta ($ post-> ID, 'cp_show_ui', $ _POST ['cp_show_ui'], $ cp_show_ui); update_post_meta ($ post-> ID, 'cp_show_in_menu', $ _POST ['cp_show_in_menu'], $ cp_show_in_menu); update_post_meta ($ post-> ID, 'cp_query_var', $ _POST ['cp_query_var'], $ cp_query_var); update_post_meta ($ post-> ID, 'cp_rewrite', $ _POST ['cp_rewrite'], $ cp_rewrite); update_post_meta ($ post-> ID, 'cp_has_archive', $ _POST ['cp_has_archive'], $ cp_has_archive); update_post_meta ($ post-> ID, 'cp_hierarchical', $ _POST ['cp_hierarchical'], $ cp_hierarchical); update_post_meta ($ post-> ID, 'cp_capability_type', $ _POST ['cp_capability_type'], $ cp_capability_type); update_post_meta ($ post-> ID, 'cp_menu_position', $ _POST ['cp_menu_position'], $ cp_menu_position); update_post_meta ($ post-> ID, 'cp_s_title', $ _POST ['cp_s_title'], $ cp_s_title); update_post_meta ($ post-> ID, 'cp_s_editor', $ _POST ['cp_s_editor'], $ cp_s_editor); update_post_meta ($ post-> ID, 'cp_s_author', $ _POST ['cp_s_author'], $ cp_s_author); update_post_meta ($ post-> ID, 'cp_s_thumbnail', $ _POST ['cp_s_thumbnail'], $ cp_s_thumbnail); update_post_meta ($ post-> ID, 'cp_s_excerpt', $ _POST ['cp_s_excerpt'], $ cp_s_excerpt); update_post_meta ($ post-> ID, 'cp_s_comments', $ _POST ['cp_s_comments'], $ cp_s_comments); update_post_meta ($ post-> ID, 'cp_general_name', $ _POST ['cp_general_name'], $ cp_general_name); update_post_meta ($ post-> ID, 'cp_singular_name', $ _POST ['cp_singular_name'], $ cp_singular_name); update_post_meta ($ post-> ID, 'cp_add_new', $ _POST ['cp_add_new'], $ cp_add_new); update_post_meta ($ post-> ID, 'cp_add_new_item', $ _POST ['cp_add_new_item'], $ cp_add_new_item); update_post_meta ($ post-> ID, 'cp_edit_item', $ _POST ['cp_edit_item'], $ cp_edit_item); update_post_meta ($ post-> ID, 'cp_new_item', $ _POST ['cp_new_item'], $ cp_new_item); update_post_meta ($ post-> ID, 'cp_all_items', $ _POST ['cp_all_items'], $ cp_all_items); update_post_meta ($ post-> ID, 'cp_view_item', $ _POST ['cp_view_item'], $ cp_view_item); update_post_meta ($ post-> ID, 'cp_search_items', $ _POST ['cp_search_items'], $ cp_search_items); update_post_meta ($ post-> ID, 'cp_not_found', $ _POST ['cp_not_found'], $ cp_not_found); update_post_meta ($ post-> ID, 'cp_not_found_in_trash', $ _POST ['cp_not_found_in_trash'], $ cp_not_found_in_trash); update_post_meta ($ post-> ID, 'cp_parent_item_colon', $ _POST ['cp_parent_item_colon'], $ cp_parent_item_colon);Mai întâi, extragem variabilele pe care le-am făcut anterior în partea de sus a funcționalității meta-box și apoi le actualizăm folosind
update_post_meta
funcția, pe care le oferim parametrii: id post, meta chei nume, valoare nouă, valoare veche. Voila, am actualizat câmpul personalizat al unei singure valori. Trebuie să repetăm procesul așa cum vedeți în exemplul de mai sus pentru a acoperi toate valorile și toate opțiunile de care avem nevoie.Asta e pentru salvarea datelor.
Pasul 6 Crearea tipurilor de postări personalizate dinamice
Deci, cum să luăm toate datele pe care tocmai le-am salvat și să le facem dinamice? cum îl folosim pentru a genera tipuri personalizate de posturi? Ușor, interogăm tipul principal de post personalizat, iar pentru fiecare post de buclă extragem câmpurile personalizate și plasăm datele în interiorul matricei.
Să aruncăm o privire la cum să facem asta. Mai întâi, plasăm acest cod exact sub codul de tip personalizat, în interiorul lui init_custom_post_types funcţie. Și astfel, începem prin crearea interogării:
$ the_query = noua valoare WP_Query (array ('post_type' => array ('CPT'))); în timp ce ($ the_query-> have_posts ()): $ the_query-> the_post ();Creăm o variabilă numită
$ the_query
în care stocăm conținutul funcției de clasă principală invocatăwp_query
cu parametrii unei matrice care are valoarea luipost_type
numele principalului tip de post personalizat, și anume,CPT
. Apoi vom începe buclele. În interiorul bucla vom genera variabilele pe care dorim să le deținem valorile de care avem nevoie utilizând aceeași abordare în extragerea lor din baza de date ca câmpuri personalizate:postare globală $; // ************************* obține valorile $ cp_public = get_post_meta ($ post-> ID, 'cp_public', true); dacă ($ cp_public == "pe") $ cp_public = true; altceva $ cp_public = false; $ cp_publicly_queryable = get_post_meta ($ post-> ID, 'cp_publicly_queryable', true); dacă ($ cp_publicly_queryable == "pe") $ cp_publicly_queryable = true; altfel $ cp_publicly_queryable = false; $ cp_show_ui = get_post_meta ($ post-> ID, 'cp_show_ui', true); dacă ($ cp_show_ui == "pe") $ cp_show_ui = true; altfel $ cp_show_ui = false; $ cp_show_in_menu = get_post_meta ($ post-> ID, 'cp_show_in_menu', true); // dacă ($ cp_show_in_menu == "pe") $ cp_show_in_menu = true; altceva $ cp_show_in_menu = false; $ cp_query_var = get_post_meta ($ post-> ID, 'cp_query_var', true); // dacă ($ cp_query_var == "pe") $ cp_query_var = true; altceva $ cp_query_var = false; $ cp_rewrite = get_post_meta ($ post-> ID, 'cp_rewrite', true); // dacă ($ cp_rewrite == "pe") $ cp_rewrite = true; altfel $ cp_rewrite = false; $ cp_has_archive = get_post_meta ($ post-> ID, 'cp_has_archive', true); // dacă ($ cp_has_archive == "pe") $ cp_has_archive = true; altfel $ cp_has_archive = false; $ cp_hierarchical = get_post_meta ($ post-> ID, 'cp_hierarchical', true); dacă ($ cp_hierarchical == "pe") $ cp_hierarchical = true; altfel $ cp_hierarchical = false; $ cp_capability_type = get_post_meta ($ post-> ID, 'cp_capability_type', true); $ cp_menu_position = get_post_meta ($ post-> ID, 'cp_menu_position', true); $ cp_s_title = get_post_meta ($ post-> ID, 'cp_s_title', true); dacă ($ cp_s_title == "pe") $ cp_s [] = 'titlu'; $ cp_s_editor = get_post_meta ($ post-> ID, 'cp_s_editor', true); dacă ($ cp_s_editor == "pe") $ cp_s [] = 'editor'; $ cp_s_author = get_post_meta ($ post-> ID, 'cp_s_author', true); dacă ($ cp_s_author == "pe") $ cp_s [] = 'autor'; $ cp_s_thumbnail = get_post_meta ($ post-> ID, 'cp_s_thumbnail', true); dacă ($ cp_s_thumbnail == "pe") $ cp_s [] = 'miniatură'; $ cp_s_excerpt = get_post_meta ($ post-> ID, 'cp_s_excerpt', true); dacă ($ cp_s_excerpt == "pe") array_push ($ cp_s, 'excerpt'); $ cp_s_comments = get_post_meta ($ post-> ID, 'cp_s_comments', true); dacă ($ cp_s_comments == "pe") array_push ($ cp_s, 'comments'); $ cp_general_name = get_post_meta ($ post-> ID, 'cp_general_name', true); $ cp_singular_name = get_post_meta ($ post-> ID, 'cp_singular_name', true); $ cp_add_new = get_post_meta ($ post-> ID, 'cp_add_new', adevărat); $ cp_add_new_item = get_post_meta ($ post-> ID, 'cp_add_new_item', true); $ cp_edit_item = get_post_meta ($ post-> ID, 'cp_edit_item', true); $ cp_new_item = get_post_meta ($ post-> ID, 'cp_new_item', adevărat); $ cp_all_items = get_post_meta ($ post-> ID, 'cp_all_items', true); $ cp_view_item = get_post_meta ($ post-> ID, 'cp_view_item', true); $ cp_search_items = get_post_meta ($ post-> ID, 'cp_search_items', true); $ cp_not_found = get_post_meta ($ post-> ID, 'cp_not_found', true); $ cp_not_found_in_trash = get_post_meta ($ post-> ID, 'cp_not_found_in_trash', adevărat); $ cp_parent_item_colon = get_post_meta ($ post-> ID, 'cp_parent_item_colon', true);Pentru că suntem acum în bucla interogării, putem folosi un glob
$ postare
pentru a obține ID-ul de care avem nevoie. De asemenea, s-ar putea să fi observat câteva condiții stabilite de către un dacă aici și acolo pentru majoritatea variabilelor. Acestea există pentru că valoarea adevărată booleană sau anumite valori de șir trebuie să fie convertite corect din"pe"
șirul pe care îl reprezintă înAdevărat
valoarea booleană trebuie să fie.După ce toate acestea sunt luate în considerare, vom introduce variabilele în matricea implementării dinamice personalizate tip post:
$ labels = array ('nume' => _x (get_the_title ($ post-> ID), 'post type general name'), 'singular_name' => _x ($ cp_singular_name, => _x ($ cp_add_new), 'add_new_item' => __ ($ cp_add_new_item), 'edit_item' => __ ($ cp_edit_item), 'new_item' 'all_items' => __ ($ cp_all_items), 'view_item' => __ ($ cp_view_item), 'search_items' => __ ($ cp_search_items), 'not_found' => __ ($ cp_not_found), 'not_found_in_trash' => __ ($ cp_not_found_in_trash), 'parent_item_colon' => __ ($ cp_parent_item_colon), 'nume_menu' => __ (get_the_title ($ post-> ID))); $ cp_show_ui, 'show_in_menu' => $ cp_show_in_menu, 'query_var' => $ args = array ('etichete' => etichete $, public '=> $ cp_public,' publicly_queryable '=> $ cp_publicly_queryable, $ cp_query_var, 'rewrite' => $ cp_rewrite, 'capability_type' => 'post', 'has_archive' => $ cp_has_archive, 'hierarchical' => $ cp_hierarchical, 'menu_position' => $ cp_menu_position, 'supports' => $ cp_s); register_post_type (get_the_title ($ post-> ID), $ args); endwhile;Titlul postului este utilizat ca nume principal al tipului de post personalizat și setărilor pentru meta-box ca și restul proprietăților. Asta este tot ce este necesar pentru implementarea tipurilor de posturi personalizate dinamice în WordPress. Ce ați fi observat este că și închidem buclele la sfârșitul codului anterior.
Concluzie
Tipurile personalizate de posturi nu sunt greu de manevrat și sunt destul de flexibile în orice funcționalitate pe care le-ați putea solicita chiar și cu alte cârlige, filtre sau funcții personalizate. În acest tutorial am reușit să acoperim o implementare dinamică specifică a gestionării personalizate a postului într-un singur plugin, explicat, cu cod și fișiere, pentru nevoile dvs. Desigur, utilizarea tipului de post personalizat nu se limitează la aceste exemple, deoarece poate fi folosită în multe tipuri de implementări, pluginuri și teme legate de multe cârlige, interogate în moduri diferite, filtrate sau manipulate în mai multe moduri.