Rock-Solid WordPress 3.0 Teme care utilizează tipuri personalizate de postări

Comunitatea WordPress vibrează cu entuziasm asupra WordPress 3.0, care va fi lansat în curând. În prezent, în Beta 2, WordPress 3.0 va avea o mulțime de funcții noi, cum ar fi o nouă temă implicită și o gestionare mai bună a meniului. Destul de cele mai interesante dintre aceste caracteristici sunt tipurile personalizate de posturi. În acest tutorial, vom vorbi despre crearea și utilizarea tipurilor de mesaje personalizate pentru a crea o temă solidă.


Ce este un tip de post particularizat?

Ei bine, conform Codului WordPress:

"Tipul postului se referă la diferitele date structurate care sunt păstrate în tabelul cu mesaje WordPress. Tipurile personalizate de posturi permit utilizatorilor să creeze și să gestioneze cu ușurință lucruri precum portofolii, proiecte, biblioteci video, podcast-uri, citate, chat-uri și orice alt utilizator sau dezvoltator pot imagina. "

În esență, ne permite dezvoltatorilor să facă noi tipuri de postări similare cu posturile și tipurile de pagini, toate acestea apar în navigarea principală din administratorul WordPress. Există mai multe avantaje pentru acest lucru; mai ales că nu mai avem nevoie de pluginuri pentru a crea tipuri speciale, putem construi o temă care se bazează mai puțin pe câmpurile personalizate (așa cum le cunoaștem) și fac mai ușor gestionarea site-ului pentru clienți și utilizatori non-tehnici. În loc să le spuneți acestora să creeze un "post" și să vă asigurați că ați completat toate tipurile de câmpuri personalizate, de exemplu, muzică, le putem spune pur și simplu să facă clic pe "Muzică" pentru a adăuga o nouă postare muzicală.

Să începem!

În acest tutorial vom:

  • Creați un tip de post personalizat pentru produsele cu intrări proprii
  • Creați o "taxonomie" personalizată pentru tip.
  • Creați un șablon de temă pentru a merge împreună cu noul tip.

Înregistrați tipul postului personalizat

Toate acestea se vor face din fișierul functions.php al temei noastre. Modifică tema implicită 3.0, TwentyTen.

Primul lucru pe care îl vom face este să spunem WordPress că dorim să înregistrăm un nou tip personalizat. Iată codul:

 add_action ('init', 'product_register'); funcția product_register () $ args = array ('label' => __ ('Produse'), 'singular_label' => __ ('Product'), 'public' => true, '=>' post ',' hierarchical '=> false,' rewrite '=> true,' suporta '=> array (' title ',' editor ',' thumbnail ')); register_post_type ('produs', $ args); 

Prima linie este un cârlig pentru a spune WordPress că dorim să apelam funcția product_register () în timpul inițializării. În această funcție se înregistrează noul tip de postare.

Functia register_post_type () acceptă două argumente: numele pe care dorim să-l oferim tipului nostru de post și o listă de argumente utilizate pentru a crea acel tip de post, pe care le punem într-un matrice numită $ args. Puteți citi exact care sunt toate argumentele, dar vreau să subliniez cele importante.

  • eticheta & singular_label: Acestea sunt etichetele așa cum vrem să apară în admin-ul WordPress. "eticheta" se va afișa în administrare și oriunde, care face referire la mai multe intrări de tipul respectiv (Edit Products, de exemplu). 'singular_label' va apărea atunci când unul dintre aceștia este referit (adăugați produsul, de exemplu).
  • capability_type: Acest lucru spune WordPress care tip nativ (post, pagină, atașament, revizie, sau nav-meniu-element) tipul personalizat se va comporta ca. Făcând un tip "post", putem face lucruri cum ar fi adăugarea la o categorie.
  • rescrie: Spuneți WordPress dacă (sau cum) se aplică formatul permalinks. Puteți trimite un boolean așa cum am făcut-o sau orice array de argumente pentru a aplica un format permalink personalizat la tip.
  • suporturi: Acesta este totul din pagina de adăugare / modificare care va apărea. Vrem să avem un titlu, un editor (conținutul) și imagini miniatură. Apoi, vom adăuga propriile intrări personalizate prin mascarea inteligentă a câmpurilor personalizate ca câmpuri de intrare pentru tipul nostru personalizat.

Adăugarea propriilor noastre intrări

Să adăugăm propriile noastre intrări personalizate pentru noul nostru tip. Deoarece acum putem crea noi tipuri de posturi, putem face ca câmpurile personalizate să fie mai eficiente pentru utilizatorii care ar putea să nu fie la fel de familiarizați cu WordPress ca și noi. Merită menționat faptul că această funcționalitate a fost disponibilă încă de la data de 2.5 și până în acest moment, fiind folosită în principal de dezvoltatorii de plugin-uri. Aici vom adăuga un câmp de prețuri.

 ID); $ price = $ personalizat ["preț"] [0]; ?>  ID, "preț", $ _POST ["preț"]); ?>

Încă o dată, primele două linii sunt cârlige pentru a spune WordPress când vrem să folosim anumite funcții. Prima linie spune că atunci când panoul de administrare este inițializat, apelați funcția pe care am scris-o, admin_init (). Această funcție îi spune WordPress să adauge o zonă numită "Opțiuni de produs" în orice post de tip "produs" și să folosească funcția meta_options () pentru a imprima câmpurile de formular. Puteți citi mai multe despre add_meta_box aici. meta_options () va primi apoi toate valorile personalizate preexistente și va tipări câmpul de formular. A doua linie de acțiune afirmă că atunci când un post este salvat, sunați la funcția noastră save_price (), care utilizează update_post_meta () pentru a adăuga sau a actualiza un câmp personalizat numit "preț".


Categorii personalizate și Editare coloane

Ultimul nostru pas în crearea unui tip complet personalizat este oferirea de nume unice categoriei sale și editarea etichetelor coloanelor. În primul rând, numele categoriei personalizate sau "taxonomia".

 register_taxonomy ("catalog", array ("product"), array ("hierarchical" => true, "label" => "catalogs", "singular_label" => "catalog", rewrite = true));

Funcția pe care o folosim este register_taxonomy (), pe care îl puteți găsi în codul de aici; a fost disponibil de la 2.8. În esență, spunem că vrem să creăm un nou tip de categorie denumit "catalog" pe care îl vom asocia cu tipul de "produs". Ultimul argument este o serie de informații similare cu cele pe care le-am văzut register_post_type () funcţie. Cand totul este spus si facut, vom avea termenul 'Catalog' apare sub meniul nostru de produse din adminul WordPress si se va comporta ca si Categoriile Post.

Apoi, dorim să creăm un set personalizat de coloane pentru tipul de produs.

 add_filter ("manage_edit-product_columns", "prod_edit_columns"); add_action ("manage_posts_custom_column", "prod_custom_columns"); funcția prod_edit_columns ($ coloane) $ columns = array ("cb" => ""," description "=>" Descriere "," price "=>" Preț "," catalog "=>" Catalog " coloană) global $ post; comutare (coloană $) caz "descriere": the_excerpt (); pauză; "price" caz: $ custom = get_post_custom (); caz "catalog": echo get_the_term_list ($ post-> ID, 'catalog', ',', ','); break;

Primele două linii sunt cârlige pentru a spune WordPress că dorim coloane personalizate pentru tipul de "produs". Prima linie spune că atunci când tipăriți coloane pentru tipul de produs, utilizați cele definite în funcție prod_edit_columns ().

În prod_edit_columns (), avem o matrice de valoare cheie unde cheile sunt folosite pentru a face referire la anumite informații post, pe care le definim în a doua funcție, prod_custom_columns (). Valorile din acea matrice sunt titlurile coloanelor. S-ar putea să observați asta prod_edit_columns () afișează cinci coloane, dar descriem numai informații de afișare pentru trei intrări prod_custom_columns (). "cb" și "title" fac parte dintr-un set de chei predefinite pe care WordPress le are deja asociații. WordPress nu știe ce alte trei sunt, deci depinde de noi să le definim.


Realizarea temei tematice

Nu e prea ciudat, nu? Și acum suntem în sfârșit la distracție - tema tematică. Pentru a crea un șablon de temă pentru un tip de post personalizat, pur și simplu denumim șablonul singular-.php și adăugați-o la tema noastră. În cazul nostru, acesta ar fi un singur produs.php. Aici vă vom arăta un fragment din acea pagină care afișează toate informațiile pe care le-am adăugat la tipul nostru de post personalizat:

  ID); $ price = "$". $ Personalizată [ "preț"] [0]; ?> 
>

-

Am adăugat acest cod temei Twentyten în WordPress 3.0 Beta, deoarece este singura temă care acceptă noua funcție - și anume sistemul de meniuri. Am copiat șablonul single.php, am redenumit produsul single-product.php și l-am înlocuit pe toate în "content" div cu codul de mai sus. Pentru a-mi testa codul, m-am dus la Themes-> Menus și am adăugat noul nostru tip pe navigația site-ului meu. Apoi, am făcut clic pe tipul nostru de post personalizat.


Înfășurarea în sus

După cum am spus anterior, WordPress 3.0 este încă în versiune beta (îl puteți obține aici); astfel încât există încă unele bug-uri pentru a lucra și unele lucruri se pot schimba în versiunea finală. Cel mai bun lucru pe care îl puteți face este să intrați acolo și să jucați cu unele dintre noile caracteristici pentru a vă familiariza cu actualizările / modificările. Din ceea ce am văzut până acum, lucrurile arată destul de bine!

Cod