WordPress personalizate tipuri de mesaje dezbatere - Functions.php sau pluginuri?
După cum mulți dintre voi știți, săptămâna trecută, Syed Balkhi a participat la WordCamp Raleigh 2012. În timpul evenimentului, unul dintre tweets a declanșat destul de o dezbatere. În acest articol, fondatorul nostru Syed Balkhi va dezbate dacă WordPress Custom Post Types aparțin în fișierul functions.php sau în plugin-uri. Mai jos este un tweet care a început această dezbatere:
Nu adăugați tipuri personalizate de posturi în funcții.php -> Ar trebui să utilizați ÎNTOTDEAUNA un plugin specific site-ului - wpbeg.in/vcXr7j #wcraleigh
- WordPress Începător (@wpbeginner) 04 noiembrie 2012
După tweet, mulți oameni de renume din comunitatea WordPress au sosit. Puteți vedea întreaga conversație aici. Curtis McHale a făcut-o cu un pas mai departe și a elaborat subiectul în noul său post blog.
Conversația de la Twitter a adus câteva puncte minunate.
Rezumatul argumentelor
Plugin argument: Utilizatorul va avea întotdeauna datele chiar dacă schimbă tema. S-ar putea să nu pară așa de drăguță, dar va rămâne acolo.
Functions.php Argument: Datele fără design ar fi irelevante. Aceasta va confunda utilizatorii chiar mai mult.
În ce parte sunteți de acord cu mai multe? În mod evident, ambele părți au problemele lor, dar care este mai mică de două rele?
Iată de ce credem că ar trebui să fie tipurile personalizate de postări MEREU trăiți într-un plugin specific site-ului sau într-un plugin separat complet.
Date lungi de viață
Tipurile de postări personalizate sunt date. În cele mai multe cazuri, datele dvs. vor depăși designul actual. După ce am schimbat temele de câteva ori, înțelegem cu claritate această afirmație. Postările, paginile, legăturile, atașamentele și revizuirile sunt toate tipurile de posturi care sunt încorporate cu WordPress. În plus, avem tipuri de posturi cum ar fi cărți, mărturii, oferte, etc. Acum, ați putea să vă imaginați dacă schimbați o temă și ați pierdut toate acestea? Cu siguranță, nu vrem să se întâmple asta.
Având dezvoltatorii din echipa noastră, acest lucru nu ar conta prea mult. Având în vedere că toate temele noastre sunt personalizate de echipa noastră, ce diferență are cu adevărat? Secretul constă în două cuvinte: timp și centralizare. Atâta timp cât avem toate datele necesare, tot ceea ce trebuie să facem în viitor este schimbarea stilului. Nu va trebui sa ne facem griji cu privire la copierea si pastrarea functiilor de la un fisier la altul in fiecare moment. Ce se întâmplă dacă doriți să replicați funcționalitatea? Luați pur și simplu pluginul și lăsați-l în noul site. Modificați stilul și ați terminat.
Reguli și standarde
Când folosiți cuvântul ÎNTOTDEAUNA, așa cum am făcut în tweet-ul nostru, acesta poate însemna regulă și standarde. Ambele reguli și standarde sunt făcute pentru majoritate. Vor exista întotdeauna scenarii speciale în care regulile sunt îndoite și standardele sunt rupte, dar asta nu înseamnă că ar trebui să scăpăm de standarde cu totul.
Există tone de tipuri de posturi generice care necesită cea mai mare parte același set de câmpuri meta suplimentare. Câteva exemple care vin în minte ar fi: Citate, Cărți, Rețetă, Marturii, Portofoliu etc..
Având în vedere numărul mare de teme de fotografie și de portofoliu care sunt disponibile pe piața liberă și comercială, nu este aproape deloc să faceți ca utilizatorul să reintroducă toate informațiile personalizate ale postului de fiecare dată când schimbă o temă. Să aruncăm o privire la un scenariu de exemplu:
Fotograf - Setarea utilizatorului a unui WordPress care are o funcționalitate blog (CPT implicit "postare"). El dorește să adauge un portofoliu al activității sale (necesită un CPT de portofoliu). El dorește să arate mărturiile clienților (necesită un CPT de testare). Toate aceste informații cu siguranță vor trăi după un design tematic. Un an mai târziu, utilizatorul dorește să schimbe aspectul site-ului său și să-i dea o reîmprospătare. Găsește o nouă temă care are toate funcțiile similare. În momentul în care schimba tema, BOOM. Toate datele anterioare pe care le-a intrat au dispărut. Există un meniu numit Portofoliu și un meniu numit Testimonials, însă niciunul dintre aceste date nu există. Utilizatorul se gândește la "GÂNDIREA LUI, mi-am pierdut tot conținutul". Creează o nouă întrebare de suport în forum. Trimite e-mailuri către site-uri precum WPBeginner etc. Dacă nu primesc răspuns bun, va trebui să reintroducă toate datele. Aceasta este o experiență de utilizator greoi.
Deci, cum rezolvăm această problemă?
Soluție posibilă?
Creăm o nouă bază standard. Justin Tadlock a început deja să lucreze la această problemă în urmă, creând un plugin pentru portofoliul de bază. O să fie soluția perfectă pentru toată lumea? NU, dar va fi pentru majoritate.
După cum cere Justin în postul său, ce câmpuri standard ar trebui să fie incluse în plugin-ul portofoliului (referindu-se la post meta). Acest tip de conversație trebuie să se întâmple în rândul dezvoltatorilor care creează funcții similare în temele lor. De ce copiați și inserați același lucru de la o temă la alta când se poate face printr-un plugin? Odată ce devine un standard, alți autori temelor vor începe să se adapteze la acesta.
De exemplu, vedem o creștere a suportului de stil pentru Formele gravitaționale în cadrul tematicilor WordPress, precum Genesis și altele. De ce? Pentru că înțeleg că utilizatorii le utilizează.
Există câteva teme robuste WordPress care vine încărcate cu funcționalitate pe care credem că ar trebui să fie plugin-uri. Tematica temelor de lucru, Probleme de urmărire a temelor, Tema anunțurilor clasificate, Teme imobiliare etc. Toate acestea ar trebui să fie alimentate de un plugin de bază. Se întâmplă deja cu WooCommerce. WooThemes au lansat numeroase teme care au suport de stil încorporat pentru plugin. Alte companii tematice au promis să lanseze temele eCommerce bazate pe WooCommerce. Puteți trece de la o temă la alta și puteți păstra toate produsele dvs. ca atare. E aproape ca și cum tema sa schimbat, dar totul a căzut corect. Aceasta este tema schimbării experienței de care trebuie să ne străduim.
De ce nu faceti acelasi lucru cu Portofoliul, Marturii si alte tipuri de posturi personalizate generice? Este pentru că este prea simplu vs. eCommerce este o fiară mai mare pentru a cuceri? În mod evident, eCommerce are prea multe domenii în comparație cu celelalte, deci ar trebui să fie mult mai ușor pentru aceste tipuri de posturi generice. Este doar o chestiune de a face un efort conștient de a face lucrurile mai bune.
Aruncați o privire la pluginul ReciPress. Creează un metabox personalizat cu câmpuri de rețete și îl atașează cu posturi. Cu toate acestea, este posibil să se atașeze cu tipuri personalizate de posturi. Oricine utilizează acest plugin poate schimba teme fără a trebui să treacă printr-o astfel de hassle.
Ar fi frumos să vedeți teme ca AgentPress să fie alimentate de un plugin centralizat de bază. Ar fi minunat să vedem că tranziția schimbării temelor devine mai ușoară. De exemplu, dacă un utilizator trece de la o temă de fotografiere la alta, nu ar trebui să fie haos. Pot apărea erori minore, dar cel puțin în imaginea de ansamblu, lucrurile vor funcționa.
Puteți să oferiți întotdeauna exemple de tipuri de posturi super personalizate create pentru utilizarea unui client unic, dar aceasta este excepția, nu regula.
Ce părere aveți despre acest subiect? Unde ar trebui să se găsească codul personalizat? În fișierul functions.php sau în pluginuri?