Crearea tipurilor de postări personalizate

Publicat: 2016-08-23

WordPress nu este „ doar o platformă de blogging ” de ceva timp. Una dintre caracteristicile cheie care l-au ajutat să se transforme într-un sistem de management al conținutului (CMS) adecvat este Tipurile de postări personalizate .

Acesta este primul articol dintr-o serie de trei părți pe tema tipurilor de postări personalizate (CPT). Acestea sunt subiectele pe care le vom discuta în următoarele două:

  • Taxonomii personalizate
  • Afișarea tipurilor de postări personalizate (șabloane și interogări)

Dar, deocamdată, să aruncăm o privire mai atentă la tipurile de postări personalizate și la modul de configurare a acestora.

Ce este un tip de postare personalizat?

În mod implicit, WordPress folosește aceste tipuri de postări:

  • Post
  • Pagină
  • Atașament
  • Revizuire
  • Articol din meniu

Deci, ce este un tip de postare personalizat? Un tip de postare personalizat este practic o postare WordPress cu parametri personalizați definiți (câmpuri personalizate, categorie personalizată/structură de etichetă, …). Exemplele clasice de tipuri de postări personalizate sunt: ​​cărți, recenzii, mărturii, membri ai echipei, portofolii și așa mai departe. Dar îl puteți folosi pentru orice indică tipul de conținut pe care îl creați.

De ce ai folosi unul?

Puteți folosi doar postări WP obișnuite și utilizați categorii și etichete, pentru a separa diferitele „tipuri de postări”. Dar acest lucru nu este ideal și poate duce la complicații pe drum. Iată câteva motive pentru care ați putea dori să utilizați un tip de postare personalizat:

  • Dacă doriți să separați un anumit conținut de alte tipuri de postări disponibile în WordPress
  • Aveți nevoie de câteva câmpuri personalizate care sunt exclusive pentru conținutul pe care doriți să-l postați
  • Trebuie să afișați conținutul diferit față de alte tipuri de postări (cum ar fi postări sau pagini)

Să presupunem că scrii un blog cu mâncare. De obicei postezi critici la restaurante, dar ai vrea să postezi și propriile rețete. Rețetele ar face un tip de postare personalizat perfect , deoarece probabil ar trebui să aveți un aspect diferit față de o postare obișnuită. Poate și niște câmpuri personalizate, cum ar fi ingredientele, de exemplu. Odată cu introducerea unei rețete CPT , secțiunea de blog ar conține doar postarea ta obișnuită, iar rețetele tale ar avea propria lor secțiune (pagină proprie de arhivă rețete). Acest lucru ar face mai ușor pentru vizitatorii care doresc doar să se uite la rețetele tale.

În această serie de articole, vom crea mărturiile CPT pentru tema noastră Shaka. Să presupunem că un utilizator dorește să aibă o pagină în care să poată afișa fiecare mărturie a clientului. El dorește să adauge câteva câmpuri personalizate la acest tip de postare personalizată și, de asemenea, dorește un aspect diferit pentru a afișa aceste mărturii. Să aruncăm mai întâi o privire la cum să înregistrăm un tip de postare personalizat.

Cum poți crea un tip de postare personalizat?

Există două moduri de a crea un nou tip de postare personalizat.

Prima opțiune este să utilizați un plugin care va înregistra tipul de postare personalizat pentru dvs. Această metodă este bună pentru utilizatorii care nu sunt familiarizați cu codul PHP. Introduceți doar detaliile necesare, iar pluginul se ocupă de restul.

A doua metodă este să înregistrați manual tipul de postare personalizat. Asta înseamnă că trebuie să scrii ceva cod, dar nu te panica, este destul de simplu și îți voi arăta și un truc frumos.

Creați un tip de postare personalizat cu un plugin - modalitatea ușoară

Dacă doriți să adăugați rapid și ușor un tip de postare personalizat pe site-ul dvs., atunci ar trebui să utilizați un plugin care oferă o astfel de funcționalitate. Probabil cel mai popular plugin pentru a face asta este Custom Post Type UI, este gratuit și ușor de utilizat. Să-l setăm:

  1. Instalați și activați pluginul Custom Post Type UI din tabloul de bord wp-admin,
  2. Odată ce activați pluginul, elementul de meniu CPT UI admin va fi disponibil. Accesați CPT UI -> Adăugați/Editați tipuri de postări,
  3. Aici veți găsi o mulțime de setări pe care le puteți aplica pentru a vă personaliza CPT. Nu le vom analiza pe toate în detaliu în acest articol. Însă, lângă fiecare etichetă de setare, există o pictogramă de indicație pentru a explica ce face fiecare setare. Să setăm lucrurile de care avem nevoie pentru cazul nostru de utilizare (mărturie CPT),
  4. Introduceți slug: mărturii, etichetă la plural: Mărturii și eticheta la singular: Mărturie,
  5. Puteți face clic pe butonul Editați etichete suplimentare pentru a seta etichete mai precise. Dar putem sări peste asta și să revenim dacă vedem o problemă mai târziu,
  6. Toate setările implicite sunt ok pentru cazul nostru de utilizare, vom adăuga doar suport pentru câmpuri personalizate (bifați caseta de selectare Câmpuri personalizate din secțiunea Suport),
  7. Faceți clic pe Adăugați tip de postare pentru a crea tipul de postare personalizat.

De îndată ce creăm tipul de postare personalizat, apare un nou element de meniu al tabloului de bord Testimonials wp-admin. Acum putem crea noi mărturii cu toate câmpurile care au fost selectate când am creat tipul de postare personalizat (Titlu, Editor, Imagine recomandată și Câmpuri personalizate).

CPT - Adăugați o nouă mărturie

De asemenea, am putea seta o taxonomie pentru acest tip de postare personalizată, dar o vom acoperi în articolul următor .

Creați manual un tip de postare personalizat - implicată codificare

S-ar putea să vă întrebați: dacă puteți crea un tip de postare personalizat cu un plugin, de ce ar vrea cineva să-l creeze manual, cu cod?

Capacitatea de a crea unul cu un plugin este cu siguranță foarte convenabilă , dar există cazuri în care ați dori să o faceți prin cod. De exemplu, dacă dezvoltați un site pentru clientul dvs. și nu doriți ca clientul să poată schimba aceste setări, sau dacă nu doriți să instalați încă un plugin pe site-ul său. De asemenea, dacă doriți să creați o temă (sau o temă copil) pentru utilizare pe mai multe site-uri, este mai ușor să aveți tipul de postare personalizat înregistrat în cod decât să repetați pașii pluginului pentru fiecare site. Există câteva argumente pro și contra pentru fiecare metodă, așa că trebuie să decideți ce este mai bine în cazul dvs.

Codul pentru a crea un tip de postare personalizat poate fi plasat direct într-o temă (în functions.php ). Sau puteți crea un plugin nou și puneți codul CPT acolo. Aceasta este, de asemenea, o întrebare dezbinătoare în comunitatea WordPress. O parte spune că ar trebui să fie localizat în plugin , astfel încât, dacă schimbați tema, datele CPT-ului să rămână (dar ieșirea este nestilată și nu arată bine în noua temă). Și cealaltă parte crede că este mai bine să puneți codul CPT direct în temă , deoarece este specific temei și este, de asemenea, stilat special pentru această temă.

Personal, cred că este întotdeauna mai bine să separați stilul (tema) de funcționalitate (plugin-uri) și astfel crearea unui nou plugin pentru înregistrarea CPT este o opțiune mai bună . Este mai ușor să adăugați stil noii teme pentru a face ca rezultatul CPT să arate bine decât să pierdeți datele CPT din cauza trecerii la o nouă temă.

Înregistrați un tip de postare personalizat cu cod

Am promis un truc frumos, nu-i așa? Ei bine, de fapt nu trebuie să scrieți cod pentru a putea înregistra un tip de postare personalizat prin cod. Acest lucru poate suna ciudat, dar este adevărat. Puteți utiliza acest instrument la generatewp.com pentru a genera codul necesar pentru înregistrarea CPT. Tot ce trebuie să faceți este să introduceți câteva date și să generați codul. Am făcut asta pentru cazul nostru de utilizare a mărturiilor și iată ce a ieșit:

 // Register Custom Post Type function custom_post_type_testimonials() { $labels = array( 'name' => _x( 'Testimonials', 'Post Type General Name', 'text_domain' ), 'singular_name' => _x( 'Testimonial', 'Post Type Singular Name', 'text_domain' ), 'menu_name' => __( 'Testimonials', 'text_domain' ), 'name_admin_bar' => __( 'Testimonials', 'text_domain' ), 'archives' => __( 'Item Archives', 'text_domain' ), 'parent_item_colon' => __( 'Parent Item:', 'text_domain' ), 'all_items' => __( 'All Items', 'text_domain' ), 'add_new_item' => __( 'Add New Item', 'text_domain' ), 'add_new' => __( 'Add New', 'text_domain' ), 'new_item' => __( 'New Item', 'text_domain' ), 'edit_item' => __( 'Edit Item', 'text_domain' ), 'update_item' => __( 'Update Item', 'text_domain' ), 'view_item' => __( 'View Item', 'text_domain' ), 'search_items' => __( 'Search Item', 'text_domain' ), 'not_found' => __( 'Not found', 'text_domain' ), 'not_found_in_trash' => __( 'Not found in Trash', 'text_domain' ), 'featured_image' => __( 'Featured Image', 'text_domain' ), 'set_featured_image' => __( 'Set featured image', 'text_domain' ), 'remove_featured_image' => __( 'Remove featured image', 'text_domain' ), 'use_featured_image' => __( 'Use as featured image', 'text_domain' ), 'insert_into_item' => __( 'Insert into item', 'text_domain' ), 'uploaded_to_this_item' => __( 'Uploaded to this item', 'text_domain' ), 'items_list' => __( 'Items list', 'text_domain' ), 'items_list_navigation' => __( 'Items list navigation', 'text_domain' ), 'filter_items_list' => __( 'Filter items list', 'text_domain' ), ); $args = array( 'label' => __( 'Testimonials', 'text_domain' ), 'labels' => $labels, 'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields' ), 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'menu_position' => 5, 'show_in_admin_bar' => true, 'show_in_nav_menus' => true, 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => false, 'publicly_queryable' => true, 'capability_type' => 'page', ); register_post_type( 'testimonials', $args ); } add_action( 'init', 'custom_post_type_testimonials' );

… Un cod PHP perfect valid pe care îl poți folosi în proiectele tale. După cum sa discutat mai înainte, puteți pune acest cod într-un plugin nou creat sau îl puteți pune în fișierul functions.php al temei. De dragul simplității am optat pentru cea din urmă. Am pus acest cod in fisierul functions.php al temei si a aparut meniul Testimonials wp-admin si acum pot crea noi marturii (la fel ca in metoda pluginului de mai sus).

De asemenea, puteți seta o pictogramă diferită pentru tipul de postare personalizat, care va fi afișată în meniul wp-admin. Trebuie doar să adăugați această linie în matricea $args: 'menu_icon' => 'dashicons-businessman' . Puteți găsi o listă cu toate pictogramele posibile aici: WordPress Dashicons. (Mulțumesc lui Alexander pentru acest sfat).

Să aruncăm o privire mai atentă la cod:

  • Întregul proces de înregistrare CPT este încapsulat în funcția custom_post_type_testimonial() , care este conectată în hook-ul init WP la sfârșitul fragmentului cu această linie de cod: add_action( 'init', 'custom_post_type_testimonials' ); . Acest apel add_action este apelul final care pune totul în mișcare și îl face pe WordPress să facă magie.
  • Primul bloc de cod din interiorul funcției este o matrice de date numită $labels , care conține șirurile de traducere pentru acest tip de postare personalizat.
  • Al doilea bloc este o serie de argumente utilizate pentru înregistrarea CPT, aici puteți defini toate setările pentru CPT. Ce câmpuri ar trebui să suporte CPT, dacă este vizibil public, poziția meniului wp-admin, dacă are o pagină de arhivă și așa mai departe. Pentru a vedea setul complet de opțiuni, vă rugăm să vizitați această pagină de codex WP.
  • Linia finală a funcției este register_post_type( 'testimonials', $args ); . Aceasta va înregistra tipul de postare personalizat „mărturii” cu setările pe care le-am specificat în $args mai sus.

Asta e! Am înregistrat un tip de postare personalizat cu un pic de cod PHP.

Singura îmbunătățire pe care aș schimba codul generat ar fi folosirea funcțiilor de internaționalizare de evadare. Deci, în loc de _x() și __() aș folosi esc_html_x() și esc_html__() . Este întotdeauna bine să scapi de valorile de ieșire – chiar și de șiruri de traducere – dar acesta este un subiect pentru o altă postare de blog.

Următorul articol din serie: Cum să creați o taxonomie personalizată.