Creați manual tipuri de postări personalizate WordPress

Publicat: 2020-12-15

În primul nostru articol despre tipurile de postări personalizate WordPress, am analizat cum vă puteți crea cu ușurință propriile tipuri de postări personalizate folosind excelentul plugin Custom Post Type UI. În acest al doilea articol ne vom uita la modul în care puteți face acest lucru manual (adică prin codificare). Deci, de ce, dacă este atât de ușor să creați un tip de postare personalizat folosind un plugin, ați dori să faceți acest lucru pe cale lungă?

Utilizarea unui plugin pentru a adăuga funcționalități personalizate poate funcționa extrem de bine (și biblioteca vastă de pluginuri care ajută la extinderea funcționalității este unul dintre motivele pentru care WordPress este atât de popular). Dar, pot apărea probleme dacă și când un plugin devine neacceptat (deoarece autorul pluginului alege să nu continue actualizarea și dezvoltarea acestuia). Dacă se întâmplă acest lucru, puteți constata că funcționalitatea oferită de plugin acum nu mai funcționează, ceea ce ar putea fi o problemă serioasă dacă site-ul dvs. este construit în jurul unei anumite caracteristici furnizate de un plugin.

Ca atare, dacă puteți codifica funcționalitatea direct, mai degrabă decât să vă bazați pe un plugin, atunci este o opțiune bună de luat în considerare.

Astăzi vă vom prezenta cum vă puteți crea propriul tip de postare personalizat fără a utiliza un plugin. Vom demonstra, de asemenea, unele configurații de bază, cum ar fi definirea etichetelor CPT (Custom Post Type) împreună cu lucruri precum activarea imaginilor prezentate și multe altele. Vom adăuga apoi o taxonomie personalizată și, în sfârșit, vom vedea cum puteți afișa conținutul tipului de postare personalizat în interfața site-ului dvs. web.

Creați tipul de postare personalizat

Dacă ați urmat tutorialul nostru anterior și încă aveți instalat pluginul CPT UI, vă rugăm să dezactivați-l, astfel încât să nu apară confuzii la crearea manuală a noului dvs. CPT.

Ca și anterior, vom folosi Rețete ca punct central pentru noul nostru tip de postare personalizată. Pentru a începe, primul lucru pe care trebuie să-l facem este să creăm tipul de postare personalizat inserând codul corect în fișierul nostru functions.php .

Configurare de bază

Pentru moment, ne vom crea tipurile de postări cu argumente minime utilizând funcția register_post_type pe care o oferă WordPress.

 register_post_type( string $post_type, array|string $args = array() )

Structura acestei funcții necesită doi parametri. Tasta de tip post care ar trebui să conțină doar caractere alfanumerice minuscule, liniuțe și liniuțe de subliniere și un al doilea parametru opțional, $args pentru argumente suplimentare. Ne vom concentra doar pe unele dintre aceste argumente în acest articol, dar dacă doriți să experimentați mai multe, puteți găsi lista completă a argumentelor disponibile în documentația WordPress aferentă.

În scopul acestui articol vom folosi codul de mai jos.

 function recipes_post_type() { register_post_type( 'recipes', array( 'labels' => array( 'name' => __( 'Recipes' ), 'singular_name' => __( 'Recipe' ) ), 'public' => true, 'show_in_rest' => true, 'supports' => array('title', 'editor', 'thumbnail') ) ); } add_action( 'init', 'recipes_post_type' );

Dacă urmăriți, porniți editorul de text preferat și adăugați acest cod în fișierul functions.php .

Veți vedea în acest cod că am folosit matricea „etichete” pentru a defini numele singular și plural pentru tipul nostru de postare, argumentul show_in_rest pentru a activa editorul Gutenberg pentru postările de rețete, precum și argumentul public .

Argumentul public face de fapt trei lucruri diferite. Afișează meniul de postare personalizat de administrator, include meniul de postare personalizat în rezultatele căutării pe site și arată, de asemenea, meniul de postare personalizat în zona WordPress Admin Menu. Aceste opțiuni pot fi modificate separat folosind show_in_nav_menus , exclude_from_search și, respectiv, show_ui . Valoarea implicită show_in_nav_menus și show_ui moștenește valoarea public , dar valoarea implicită exclude_from_search este opusă valorii public .

Am folosit, de asemenea, argumentul de supports care definește ce caracteristici va suporta o postare personalizată. Deocamdată vom activa doar „titlu”, „editor” și „miniatură” (câteva opțiuni suplimentare vor fi afișate în articolele viitoare).

Cu acest fragment de cod adăugat la fișierul nostru functions.php și salvat (întodeauna faceți o copie de rezervă a site-ului dvs. înainte de a începe astfel de lucrări!), veți vedea acum un nou element de meniu în Administratorul WordPress (în acest caz, „Rețete”).

Apoi, dacă ne îndreptăm către Aspect > Meniuri, putem confirma că Rețetele au fost adăugate ca opțiune. Acest lucru confirmă că lucrurile funcționează așa cum ar trebui să fie.

Notă: Dacă accesați zona de meniu și nu vedeți elementul de meniu „Rețete”, atunci este posibil ca acesta să nu fi fost bifat în Opțiunile ecranului. Pentru a face acest lucru, mergeți în partea de sus a paginii și deschideți bara Opțiuni ecran și asigurați-vă că noul tip de postare personalizată (Rețete în acest exemplu) a fost bifat.

Adăugați taxonomia dvs. pentru tipul dvs. personalizat de postare

Taxonomiile WordPress există pentru a grupa conținut similar. În acest moment avem postările noastre personalizate de „rețete”, dar nu avem capacitatea de a le clasifica așa cum ne dorim. Ca atare, ar fi util să creăm o categorie separată pentru rețetele noastre. Să grupăm, de exemplu, rețetele după felul de bucătărie din care aparțin.

Pentru a realiza acest lucru, trebuie să înregistrăm o nouă taxonomie „bucătărie” și apoi să o conectăm la tipul de postare „rețete”.

Pentru a adăuga taxonomia folosim funcția register_taxonomy() oferită de WordPress (vezi o listă de argumente aici).

 register_taxonomy( string $taxonomy, $object_type, $args )

Argumentele obligatorii sunt $taxonomy , care este cheia taxonomiei, și $object_type , care este tipul de obiect sau matricea de tipuri de obiecte cu care taxonomia ar trebui să fie asociată, în cazul nostru, „rețete”. În parametrul $arg vom include și valorile necesare pentru etichetarea instanțelor noastre administrative ale taxonomiei noastre.

 function create_recipes_taxonomy() { register_taxonomy('cuisines','recipes',array( 'hierarchical' => false, 'labels' => array( 'name' => _x( 'Cuisines', 'taxonomy general name' ), 'singular_name' => _x( 'Cuisine', 'taxonomy singular name' ), 'menu_name' => __( 'Cuisines' ), 'all_items' => __( 'All Cuisines' ), 'edit_item' => __( 'Edit Cuisines' ), 'update_item' => __( 'Update Cuisines' ), 'add_new_item' => __( 'Add Cuisines' ), 'new_item_name' => __( 'New Cuisines' ), ), 'show_ui' => true, 'show_in_rest' => true, 'show_admin_column' => true, )); } add_action( 'init', 'create_recipes_taxonomy', 0 );

Valoarea booleană show_admin_column definește dacă taxonomia va fi sau nu vizibilă ca coloană în tabelul listei de administrare a rețetelor.

Acum, dacă vă întoarceți la administratorul WordPress și actualizați acest lucru, ar trebui să vedeți taxonomia „Bucătărie” în meniul Rețete.

Ar trebui să vedeți și o coloană „Bucătărie” în tabelul Rețete:

Afișarea conținutului dvs. de tipul de postare personalizat pe front-end

În acest moment, ar trebui să puteți include postările personalizate în meniul dvs., precum și taxonomiile personalizate pe care le-ați creat. Pentru a demonstra acest lucru, am adăugat două bucătării „mediteraneene” și „mexicane” în meniul nostru de taxonomie bucătăriilor. Acestea apar apoi ca opțiuni de meniu în meniul nostru WordPress, permițându-ne să creăm un meniu Rețete ca cel prezentat mai jos.

Dacă ați creat o postare de rețetă și ați asociat-o cu o categorie de Bucătărie, ar trebui să vedeți că acestea apar atunci când selectați bucătăria asociată din meniu.

Notă: Dacă încercați să vizualizați o postare de rețetă în front-end, este posibil să obțineți un „404 nu a fost găsit”. Acest lucru se poate întâmpla deoarece memoria cache Permalink trebuie să fie golită. Acest lucru este ușor de făcut. Doar mergeți la Setări > Permalink-uri și re-salvați.

Acum vom crea un alt element de meniu pentru „Toate rețetele” folosind codul personalizat pentru a afișa o arhivă a tuturor rețetelor noastre.

Înainte de a continua, totuși, ar trebui să ne asigurăm că argumentul nostru arhivă de postări personalizate este setat la adevărat. Reveniți la codul dvs. din functions.php unde înregistrați tipul de rețete și adăugați 'has_archive' => true, în matricea de argumente.

 function recipes_post_type() { register_post_type( 'recipes', array( 'labels' => array( 'name' => __( 'Recipes' ), 'singular_name' => __( 'Recipe' ) ), 'public' => true, 'show_in_rest' => true, 'supports' => array('title', 'editor', 'thumbnail'), 'has_archive' => true, ) ); } add_action( 'init', 'recipes_post_type' );

După aceea, accesați Setări > Legături permanente și salvați din nou pentru a vă asigura că nu primiți o eroare 404 (după cum am menționat anterior).

Acum, în pagina de construcție a meniului, adăugați linkul personalizat pentru pagina de arhive. Textul linkului ar putea fi „Toate rețetele”.

Adresa URL ar trebui să fie „/?post_type=rețete”, dacă permalinkurile sunt setate la „Plain” și „/recipes/” dacă permalinkurile sunt setate la „Nume postare”.

Adăugați elementul de meniu și accesați site-ul dvs. și faceți clic pe linkul acestuia. Acum ar trebui să vedeți toate postările de rețete într-o vizualizare de arhivă.

Lectură suplimentară

  • Creați tipuri de postări personalizate WordPress folosind un plugin
  • Tipuri de postări personalizate WordPress – Ducând-o mai departe
  • Creați tipuri de postări personalizate WordPress folosind propriul dvs. plugin!

Concluzie

Modul de abordare a tipurilor de postări personalizate pe care l-am examinat în acest articol poate părea confuz la început (mai ales în comparație cu ușurința de a crea tipuri de postări personalizate folosind un plugin). Dacă ești dispus să perseverezi, totuși, codificarea propriilor tipuri de postări personalizate are avantajele sale și anume că nu te bazezi pe un plugin în cazul în care pluginul respectiv nu mai funcționează sau devine neacceptat.