WordPress anpassade inlĂ€ggstyper Debatt – Functions.php eller Plugins?

WordPress anpassade inlÀggstyper Debatt - Functions.php eller Plugins?

Som mÄnga av er vet deltog Syed Balkhi i WordCamp Raleigh 2012. Under evenemanget utlöste en av hans tweets en hel del debatt. I den hÀr artikeln kommer vÄr grundare Syed Balkhi att diskutera om WordPress anpassade inlÀggstyper tillhör funktioner.php-filen eller i plugins. Nedan följer en tweet som startade denna debatt:

LĂ€gg inte till anpassade inlĂ€ggstyper i functions.php -> Du ska ALLTID anvĂ€nda ett platsspecifikt plugin – wpbeg.in/vcXr7j #wcraleigh

– WordPress Nybörjare (@wpbeginner) 4 november 2012

Efter tweeten chimade mÄnga ansedda mÀnniskor i WordPress-communityn in. Du kan se hela konversationen hÀr. Curtis McHale tog det ett steg lÀngre och utarbetade Àmnet i sitt nya blogginlÀgg.

Konversationen frÄn twitter tog upp nÄgra bra poÀng.

Sammanfattning av argument

Plugins-argument: AnvÀndaren kommer alltid att ha data Àven om de Àndrar tema. Det kanske inte ser sÄ vackert ut, men det kommer att stanna kvar.

Funktioner.php Argument: Data utan design skulle vara irrelevant. Det kommer att förvirra anvÀndarna Ànnu mer.

Vilken sida hÄller du med mer? Det Àr uppenbart att bÄda sidor har sina problem, men vilken Àr det mindre av tvÄ ondska?

Det Àr dÀrför vi anser att anpassade inlÀggstyper borde ALLTID lev i ett platsspecifikt plugin eller ett separat plugin helt och hÄllet.

LĂ„ng levande data

Anpassade inlÀggstyper Àr data. I de flesta fall överlever dina data den aktuella designen. Efter att ha Àndrat vÄra teman nÄgra gÄnger förstÄr vi det uttalandet tydligt. InlÀgg, sidor, lÀnkar, bilagor och versioner Àr alla typer av inlÀggstyper som kommer inbyggda med WordPress. Utöver det har vi inlÀggstyper som böcker, vittnesmÄl, erbjudanden etc. Kan du förestÀlla dig om vi byter tema och har alla dessa försvunnit? Visst vill vi inte att det ska hÀnda.

Med utvecklare i vĂ„rt team borde det inte betyda mycket. Med tanke pĂ„ att alla vĂ„ra teman Ă€r specialdesignade av vĂ„rt team, vilken skillnad gör det egentligen? Hemligheten ligger i tvĂ„ ord: tid och centralisering. SĂ„ lĂ€nge vi har all nödvĂ€ndig data Ă€r allt vi behöver göra i framtiden att Ă€ndra stylingen. Vi behöver inte oroa oss för att kopiera och klistra in funktionerna frĂ„n en fil till en annan varje gĂ„ng. Vad hĂ€nder om du vill replikera funktionaliteten? Ta bara plugin-programmet och slĂ€pp det pĂ„ din nya webbplats. Ändra stylingen sĂ„ Ă€r du klar.

Regler och standarder

NÀr du anvÀnder ordet ALLTID som vi gjorde i vÄr tweet kan det betyda bÄde regel och standard. BÄde regler och standarder Àr gjorda för majoriteten. Det kommer alltid att finnas scenarier i speciella fall dÀr regler Àr böjda och standarder bryts, men det betyder inte att vi ska bli av med standarder helt och hÄllet.

Det finns massor av generiska posttyper som oftast krÀver samma uppsÀttning ytterligare metafÀlt. NÄgra exempel som kommer att tÀnka pÄ Àr: Citat, böcker, recept, vittnesmÄl, portfölj etc.

Med tanke pÄ det stora antalet fotograferings- och portföljteman som finns pÄ den fria och kommersiella marknaden, Àr det nÀstan inte meningsfullt att fÄ anvÀndaren att mata in all sin anpassade posttypinformation varje gÄng de byter tema. LÄt oss ta en titt pÄ ett exempel pÄ fall:

Fotograf – AnvĂ€ndarinstĂ€llning av WordPress som har en bloggfunktionalitet (standard CPT för “post”). Han vill lĂ€gga till en portfölj av sitt arbete (krĂ€ver en portfölj-CPT). Han vill visa kundrecensioner (krĂ€ver en CPT för testimonial). All denna information kommer sĂ€kert att leva förbi en temadesign. Ett Ă„r senare vill anvĂ€ndaren Ă€ndra utseendet pĂ„ sin webbplats och ge den en uppdatering. Hitta ett nytt tema som har alla liknande funktioner. I det ögonblick han byter tema, BOOM. Alla tidigare uppgifter som han angav har försvunnit. Det finns en meny som heter Portfolio och en meny som heter Testimonials men ingen av uppgifterna finns dĂ€r. AnvĂ€ndarens tĂ€nker “HOLY CRAP, jag tappade allt mitt innehĂ„ll”. Skapar nya supportfrĂ„gor i forumet. Skickar e-postmeddelanden till webbplatser som WPBeginner etc. Om de inte fĂ„r nĂ„got bra svar mĂ„ste de ange all information igen. Detta Ă€r en skitaktig anvĂ€ndarupplevelse.

SÄ hur löser vi det hÀr problemet?

Möjlig lösning?

Vi skapar en ny standardbas. Justin Tadlock började redan arbeta med denna frÄga för ett tag sedan genom att skapa ett basportföljplugin. Kommer det att vara den perfekta lösningen för alla? NEJ, men det kommer att vara för majoriteten.

Som Justin frÄgar i sitt inlÀgg, vilka standardfÀlt som ska inkluderas i portföljplugin (hÀnvisar till postmeta). Denna typ av konversation mÄste ske bland utvecklare som skapar liknande funktioner i sina teman. Varför kopiera och klistra in samma sak om och om igen frÄn ett tema till ett annat nÀr det kan göras via ett plugin? NÀr det har blivit en standard kommer andra temaförfattare att anpassa sig till den.

Till exempel ser vi en ökning av stilstödet för Gravity Forms i WordPress-temaramar som Genesis och andra. Varför? Eftersom de förstÄr att deras anvÀndare anvÀnder det.

Det finns nÄgra robusta WordPress-teman som Àr laddade med funktionalitet som vi anser bör vara plugins. Job Board Board-teman, Theme Tracking-teman, Classified Ads-tema, Fastighetstema, etc. De bör alla drivas med ett basplugin. Det hÀnder redan med WooCommerce. WooThemes har slÀppt mÄnga teman som har inbyggt stylingstöd för plugin. Andra temaföretag har lovat att slÀppa WooCommerce-baserade e-handelsteman ocksÄ. Du kan vÀxla frÄn ett tema till ett annat och behÄlla alla dina produkter som de Àr. Det Àr nÀstan som att temat förÀndrats men allt faller precis pÄ plats. Det Àr den temaförÀnderliga upplevelsen vi mÄste strÀva efter.

Varför inte göra samma sak med Portfolio, Testimonials och andra generiska anpassade inlĂ€ggstyper? Är det för att det Ă€r för enkelt kontra att e-handel Ă€r ett större odjur att erövra? Det Ă€r uppenbart att e-handel har alldeles för mĂ„nga fĂ€lt jĂ€mfört med de andra, sĂ„ det borde vara mycket lĂ€ttare för dessa generiska inlĂ€ggstyper. Det handlar bara om att göra ett medvetet försök att göra saker bĂ€ttre.

Ta en titt pÄ ReciPress-plugin. Det skapar en anpassad metabox med receptfÀlt och bifogar den med inlÀgg. Det Àr dock möjligt att bifoga det med anpassade inlÀggstyper. Den som anvÀnder detta plugin kan Àndra teman utan att behöva gÄ igenom ett sÄdant krÄngel.

Det skulle vara trevligt att se teman som AgentPress drivas av ett centraliserat basplugin. Det skulle vara fantastiskt att se övergÄngen till förÀndrade teman bli enklare. Om en anvÀndare till exempel byter frÄn ett fotografitema till ett annat borde det inte vara kaos. Mindre fel kan hÀnda, men Ätminstone i den större bilden kommer saker att fungera.

Du kan alltid ge exempel pÄ superanpassade inlÀggstyper som skapats för engÄngsklientanvÀndning, men det Àr undantaget inte regeln.

Vad tycker ni om detta Àmne? Var ska den anpassade posttypskoden finnas? I filen functions.php eller i plugins?