ThemeForest recent și-a actualizat cerințele de trimitere a temelor WordPress pentru a fi mai stricte și mai aliniate cu cele mai bune practici de dezvoltare a temelor WordPress.
Ghidurile necesită utilizarea mai multor funcții de bază WordPress, a cârligilor standard de temă și interzic funcțiile PHP (cum ar fi base64 și fopen) care cu adevărat nu ar fi trebuit să aibă niciodată loc într-o temă WordPress de la bun început.
Practic, cam aceeași politică de revizuire a temelor de pe WordPress.org, cu mici diferențe.
În general, este un pas în direcția corectă și mută spre promovarea celor mai bune practici pe una dintre cele mai populare piețe de teme WordPress de pe internet. Există doar o problemă...
Shortcoduri Admisibile
Un lucru care mi-a atras în mod deosebit atenția, însă, a fost modul în care era permisă o anumită funcționalitate de shortcoduri „admisibile” (adică prin includerea lor directă prin fișierul functions.php al temei). Cele listate ca „admisibile” includeau următoarele:
- butoane
- tabele de prețuri
- containere de imagini
- litere mari inițiale (dropcaps)
- liste
Shortcodurile inadmisibile includ: hărți, acordioane și comutatoare, conținut în casetă, coloane, formulare de contact, grafice.
Problema cu Shortcodurile în Teme
Nu pot să o spun mai bine decât a făcut-o deja Justin Tadlock. Una dintre cele mai vizibile probleme este că, atunci când un utilizator schimbă tema, shortcode-urile nu vor mai fi interpretate.
Să spunem că tema „Super Awesome” avea o funcționalitate de shortcod care genera un buton verde mare cu un link atunci când scriai ceva de genul [button url="http://example.com"]Buton Verde Mare[/button].
Când treci la o altă temă (să fim sinceri, oamenii se plictisesc ușor de teme), nu mai există butonul verde mare. În schimb, vezi shortcodul neinterpretat în postare, ca și cum ar fi orice alt conținut, astfel:
[button url=”http://example.com”]Buton Verde Mare[/button]
Arată urât, confuz și nepotrivit, și este o corvoadă pentru utilizator să se întoarcă și să le elimine/înlocuiască pe toate.
Cealaltă problemă cu shortcode-urile în teme
Ceva ce Tadlock a abordat în articolul său „Gestionarea nebuniei shortcode-urilor” este că, multe shortcode-uri sunt atât de simple și asemănătoare HTML-ului, încât ar putea fi chiar cel mai bine să instruim utilizatorii să scrie (*vai de mine*) cod HTML real.
Același shortcode [button url="http://example.com"]Text buton[/button] din exemplul meu de mai sus ar putea fi rescris cu ușurință ca ceva de genul:
<a href="http://example.com" class="button">Text buton aici</a>
Deși s-ar putea să nu existe cod CSS care să stilizeze selectorul .button într-o temă nouă, cel puțin un link normal va apărea. Ceea ce este o îmbunătățire majoră față de un shortcode [button] neanalizat care apare în conținutul unei postări.
În plus, cred că fiecare utilizator WordPress ar trebui să aibă cel puțin o înțelegere de bază a codului HTML. Învățându-i, chiar și în bucăți mici (cum ar fi cum să construiești un link), va ajuta. Dacă pot înțelege un shortcode, nu va fi nevoie de mult mai mult pentru a-i face să înțeleagă HTML-ul de bază.
Dar utilizatorilor nu le pasă!
Un argument comun pe care îl văd apărând tot felul de practici proaste atunci când vine vorba de dezvoltarea temelor este că utilizatorii pur și simplu nu le pasă. Adică, poate că nu vor să-și actualizeze niciodată tema, caz în care, această problemă a shortcode-urilor ar fi un punct irelevant.
Problema este că unii utilizatori inevitabil vor dori să schimbe temele într-o zi. Unii utilizatori vor dori să instaleze un plugin care ar putea intra în conflict cu alt cod prost gândit dintr-o temă.
Apoi, probabil că le va păsa și probabil se vor întreba dacă tema pe care au cumpărat-o cu sute de shortcode-uri încorporate și alte funcționalități superflue a meritat cu adevărat.
Modul corect de a include shortcode-uri
Puneți-l într-un plugin. Un plugin foarte simplu. Nu are nevoie de un panou de opțiuni separat. Pur și simplu copiați și lipiți tot ce ați fi inclus prin fișierul functions.php al temei și puneți-l într-un plugin în schimb.
Ar putea fi chiar inclus cu ceva de genul TGM Plugin Activation pentru a-l face obligatoriu la activarea temei. Sau nu. O temă este tot o temă fără shortcode-uri.
În acest fel, dacă utilizatorul schimbă tema, shortcode-urile vor funcționa în continuare, deoarece funcționalitatea este gestionată de pluginul care este încă activ.
Poate plugin-ul ar putea și încărca stilurile pentru shortcode-uri. Astfel, butoanele mari verzi pe care le-ați inclus cu shortcode-ul [button] vor rămâne butoane mari verzi, indiferent de tema utilizată.
De ce a permis ThemeForest shortcode-uri „admisibile”?
Este greu de spus care a fost exact raționamentul din spatele acestei decizii. Japh Thomson, un evanghelist WordPress la Envato (compania mamă a ThemeForest) a avut următoarele de spus despre asta într-un comentariu pe WPMU.org:
Funcționalitatea complexă a shortcode-urilor ar trebui să rezide într-un plugin, nu într-o temă. De asemenea, are sens atunci când luăm în considerare că majoritatea autorilor noștri au mai multe teme.
Evident, el înțelege. Deci, este un mister pentru mine de ce ar exista shortcode-uri „admisibile”. Și da, realizez că a folosit cuvântul „complex” în citatul de mai sus, iar shortcode-urile admisibile tind să fie cele destul de simple (dropcaps, liste etc.).
Oricât de simplu ar fi un shortcode, problemele pe care le-am subliniat mai sus vor persista. ThemeForest s-a dovedit a fi receptiv la feedback-ul comunității, deci este posibil ca această regulă să fie modificată în viitor.
Concluzie
Realizez că acest post pare un pic meschin, iar aceste noi ghiduri sunt cu siguranță un pas uriaș în direcția corectă. Dar nu există niciun motiv pentru care un shortcode să fie permis într-o temă, simplu sau nu.
Vă puteți imagina o situație în care o temă lansată public necesită absolut funcționalitatea shortcode prin propriul fișier functions.php?
— Theme Lab (@themelab) 9 iulie 2013
Atenție la spoilere: Nu am primit niciun răspuns la acel tweet cu un exemplu real de shortcode care să fie absolut necesar să fie inclus într-o temă lansată public.
Asta pentru că nu este deloc prietenos cu utilizatorul ca acesta să se întoarcă și să înlocuiască sute de shortcode-uri de butoane după ce a trecut la o temă care nu are exact același suport pentru shortcode.
Mulțumesc mult pentru acest post, tocmai am achiziționat o temă de pe ThemeForest și am aceeași problemă! Când am încărcat tema, paginile spun că shortcode-ul nu este compatibil… ce să fac acum pentru a-l face compatibil? Mulțumesc!
Deși sunt de acord că shortcode-urile ar trebui să rezide într-un plugin în loc de o temă, codul neanalizat va apărea în continuare atunci când pluginul este dezactivat sau înlocuit de un alt plugin de shortcode-uri. Oricum ar fi, poate fi o bătaie de cap pentru persoana care efectuează schimbarea.
Învățarea HTML de bază pare cea mai bună.
Total de acord cu asta. Teme ar trebui să gestioneze aspectul și stilurile. Orice adaugă funcționalități suplimentare trebuie să fie într-un plugin.
Am aceeași poziție cu privire la shortcode-uri, dar pot înțelege raționamentul pentru unele teme care le includ pentru utilizatorii mai puțin tehnici, pentru a adăuga funcționalități ușor și, la rândul lor, ajută la vânzarea mai multor teme ale dezvoltatorilor.
Aici, aici.
Ar fi, de asemenea, frumos dacă ar exista un fel de degradare elegantă pentru shortcode-urile care nu mai sunt active.
Astfel, posibile probleme pot fi evitate cu funcții care pot fi adăugate în viitor în teme diferite. Problemele de întreținere sunt argumente importante de achiziție – cel puțin pentru mine!
Sunt complet de acord cu tine. Foarte puțini oameni rămân cu o singură temă pentru totdeauna, cu excepția cazului în care este complet personalizată (și atunci nu ai problema themeforest) și shortcode-urile sunt o durere de cap. Am descoperit recent această problemă când am început să trec de la o temă theme-junkie la o temă studiopress/genesis. Acum am pus schimbarea în așteptare, în ciuda faptului că am cheltuit deja 80 de dolari pe ea, deoarece sunt prea multe de schimbat chiar și pe noul meu site.
Salut Leland, postare grozavă, mulțumesc pentru gândurile tale!
Vom lansa în curând o actualizare a acestor cerințe, pe baza feedback-ului de la autorii noștri, și sper că veți fi mulțumiți de unele dintre ajustările pe care le-am făcut (în special în legătură cu shortcode-urile) 🙂
Cred că nu este doar o problemă de compatibilitate cu alte teme, ci și o problemă legată de conținut. Un shortcode ar trebui să fie doar un ajutor pentru procesarea conținutului, iar temele ar trebui să afișeze doar conținut pre-procesat, nu să proceseze conținutul singure. Când temele procesează shortcode-uri pe cont propriu, ele tratează acea bucată de text (sau cel puțin așa pare dezvoltatorului) ca pe un apel către un element vizual, nu către unul funcțional (ceea ce este de fapt), ca și cum ar lipsi scopul pentru care este o temă. Această practică arată o lipsă de claritate cu privire la ce sunt conținutul, funcționalitatea și vizualizarea și cum ar trebui gestionate acele elemente (adică, conținutul ar trebui stocat în baza de date, funcționalitatea ar trebui gestionată prin nucleul WP și plugin-uri, iar vizualizarea prin teme; doar ca un exemplu foarte de bază). Nu este nevoie să fii expert în conținut, programator experimentat sau designer grozav pentru a ști astfel de lucruri, doar puțină atenție și gândire atentă la ceea ce oferim utilizatorilor noștri și cât de ușor sau dificil le va fi să folosească produsele noastre. Cred că este în regulă dacă nu cunoști diferențele, dar ești deschis să înveți și să te îmbunătățești, dar, pe de altă parte, să cunoști și să ai în minte toate aceste lucruri și să oferi totuși shortcode-uri (și orice altceva legat de funcționalitate) în teme, asta mi se pare o practică neloială care îi face pe utilizatorii tăi captivi ai produsului tău. Știu că uneori linia dintre vizualizare și funcționalitate este foarte subțire, dar în majoritatea cazurilor diferența este incontestabilă.
Scuze pentru răspunsul lung, acesta este un subiect care mă interesează foarte mult. Postare grozavă 🙂
Salut Andrés, nu este nevoie să-ți ceri scuze pentru răspunsul lung, aduci puncte excelente!
Mulțumesc pentru asta… Am probleme continue cu shortcode-urile din temele pe care le-am cumpărat. Și când le re-temez, am cod moștenit peste tot care trebuie înlocuit.
Peter, acesta este un exemplu perfect al problemei cu shortcode-urile din teme.
Lucrurile devin și mai rele atunci când alte funcționalități non-prezentaționale sunt incluse într-o temă, poate ceva despre care să vorbim într-un post viitor.