sibin grasić - najčešće greške wp developera

25
Najčešće greške WordPress developera SIBIN GRAŠIĆ / ETFOVAC.COM / [email protected]

Upload: startit

Post on 11-Jul-2015

362 views

Category:

Technology


8 download

TRANSCRIPT

Page 1: Sibin Grasić - Najčešće greške WP developera

Najčešće greške WordPress developeraSIBIN GRAŠIĆ / ETFOVAC.COM / SIBIN.GRASIC @ZOOL.RS

Page 2: Sibin Grasić - Najčešće greške WP developera

O meni

• Student ETF-a / Softversko inženjerstvo

• Web konsultant u Fondaciji Novak Đoković

• WordPress developer od 2010.

• Preko 200 realizovanih WordPress projekata

• Specijalizovan za HighPerf custom WP sisteme

Page 3: Sibin Grasić - Najčešće greške WP developera

Najčešće greške u organizacijiI KAKO IH ZAOBIĆI

Page 4: Sibin Grasić - Najčešće greške WP developera

Hiljade i hiljade dodataka

• Dodaci – bitni za svaku WP instalaciju

• Tri kategorije:- nephodni- opcioni- nepotrebni

• Neophodni: SEO, bezbednost, xml sitemap

• Opcioni: Jetpack, , keširanje

• Nepotrebni: CPT i custom taksonomije, veličine slika, bekap

• Namenski razvoj vs plugin?

Page 5: Sibin Grasić - Najčešće greške WP developera

O čemu voditi računa?

Overhead Kompatibilnost

Core funkcionalnost?

KISS

Page 6: Sibin Grasić - Najčešće greške WP developera

Overhead

• Bez obzira na sve, svaki dodatak ima overhead!

• Instanciranje klasa

• Čuvanje i učitavanje konfiguracije iz baze

• Optimizovanost koda?

• Bezbednost (timthumb)

• Ko je autor?

Page 7: Sibin Grasić - Najčešće greške WP developera

Kompatibilnost

• Sa većim brojem dodataka, veća šansa da nešto krene naopako

• Najčešći problemi:

- kod preklapanja funkcionalnosti

- ažuriranja sistema

- neažuriranja instaliranih dodataka

- promene specifikacije ili dodavanja funkcionalnosti

• Jedan dodatak pravi probleme u sinergiji sa drugim

Page 8: Sibin Grasić - Najčešće greške WP developera

„Core“ funkcionalnosti

• Sve funkcionalnosti koje se tiču podešavanja teme:

- veličine slika- widgeti- meniji- CPT i custom taksonomije

• Siva zona u WP kodeksu

• Dodaci predstavljaju ogroman overhead

• Definisani set funkcionalnosti se vezuje za temu ili namenski dodatak

Page 9: Sibin Grasić - Najčešće greške WP developera

Keep It Simple (Stupid)

• Nemojte izmišljati točak

• Nekad je dodatak brže i bolje rešenje od 250 linija koda

• Praktični primeri – kada je plagin bolje rešenje:

- jednostavan metabox -> Advanced Custom Fields

- FB opengraph -> WordPress SEO by Yoast®

- SM widget / integracija sa 3rd party servisima (Flickr, SmugMug)

Page 10: Sibin Grasić - Najčešće greške WP developera

Greške u kodiranjuSVI GREŠIMO – BITNO JE DA NAUČIMO NEŠTO IZ GREŠAKA

Page 11: Sibin Grasić - Najčešće greške WP developera

Greške u kodiranju

Layering maleTemplatehijerarhija

CSS & JSloadingsrednje

queryposts

getposts

velikeAJAX

Page 12: Sibin Grasić - Najčešće greške WP developera

Template hijerarhija

Page 13: Sibin Grasić - Najčešće greške WP developera

Template hijerarhija – dobra praksa

• front-page.php za glavnu stranicu – ne page template ili index.php

• Category / tag / search umesto archive.php

• Koristeći sve fajlove izbegavamo kondicionale

• Index.php mora da postoji kao fallback

• Page templates – isključivo za unikatne strane (kontakt, about, itd.)

Page 14: Sibin Grasić - Najčešće greške WP developera

Raslojavanje

• Delove koda / html-a koji se ponavljaju smestiti u zasebne fajlove

• Jedna izmena se primenjuje svugde gde se template fajl koristi

• Lakša organizacija koda po folderima

• Izbegavati slug i id definicije (page-contact.php)

• Drastično olakšava održavanje i potencira code reuse

• Get_template_part – WP način za „pametan“ PHP require

Page 15: Sibin Grasić - Najčešće greške WP developera

Raslojavanje - primeri

Page 16: Sibin Grasić - Najčešće greške WP developera

Učitavanje CSS i JS fajlova

• Hardkodovanje skripti uzrok najvećeg broja problema na frontendu

• Onemogućava kontrolu nad učitavanjem fajlova

• Povećava vreme učitavanja stranice

• WP kodeks zahteva učitavanje putem wp_enqueue funkcija

Page 17: Sibin Grasić - Najčešće greške WP developera

Učitavanje CSS-a i JS-a

Nepravilno:

Pravilno:

Page 18: Sibin Grasić - Najčešće greške WP developera

Zloupotreba query_posts funkcije

• Query_posts najčešće koriste developeri da prekroje template fajl

• Velika mana – zahteva još jedan SQL upit

• Dodatni problem – potreban $query_string za pravilnu paginaciju

• Codex preporučuje kačenje na pre_get_posts za izmenu WP_Query

• Na većim sajtovima filter eliminiše upite baze u 90% slučajeva

Page 19: Sibin Grasić - Najčešće greške WP developera

Primer zloupotrebe

• Upotreba query_posts na ovaj način:- zahteva kondicional- pravi novi SQL upit- pravi šum u template fajlu

Page 20: Sibin Grasić - Najčešće greške WP developera

Pravilan način

• Pre_get_posts:- vrši izmenu pre svih filtera- ne pravi problem sa paginacijom- nema overhead- poboljšava keširanje

Page 21: Sibin Grasić - Najčešće greške WP developera

AJAX

• Način za dinamičko učitavanje podataka na web stranici

• WordPress nativno podržava AJAX zahteve kroz admin-ajax.php

• Svi drugi načini korišćenja AJAX-a su pogrešni

• Korišćenjem ne-nativnih pristupa smanjujemo bezbednost

• Jednostavna granulacija pristupa uz jednu liniju koda

Page 22: Sibin Grasić - Najčešće greške WP developera

Loši načini kodiranja AJAX funkcionalnosti

• AJAX putem fajla koji učitava wp-load.php

• AJAX putem template fajlova

• AJAX putem zasebnih GET i POST varijabli

Svi ovi načini otežavaju upotrebu wp_nonce funkcija a dodatno:

• Omogućavaju još jedan vektor napada

• Zahtevaju hardkodiranje parametara

• Otežavaju održavanje i ažuriranje isstema

Page 23: Sibin Grasić - Najčešće greške WP developera

Get_posts vs WP_Query

• Get_posts je funkcija koja se bazira na WP_Query objektu

• Oba načina služe za dohvatanje postova po nekom kriterijumu

• Oba načina prihvataju iste argumente za upit

• Oba su bezbedna za korišćenje u svakom delu teme / dodatka

• I jedan i drugi način imaju prednosti i mane

Page 24: Sibin Grasić - Najčešće greške WP developera

Primeri korišćenja get_posts i WP_Query

• Get_posts se koristi u slučajevima gde:- ne planiramo da koristimo post funkcije (npr: the_title)- su nam potrebne samo određene informacije vezane za post- ne želimo prikazujemo postove na frontendu

• WP_Query koristimo u situacijama kada:

• - pravimo sekundarni loop- prikazujemo postove na frontendu- planiramo da vršimo dinamičku filtraciju postova na osnovu filtera

Page 25: Sibin Grasić - Najčešće greške WP developera

Pitanja?

Layering maleTemplatehijerarhija

CSS & JS

loadingsrednje

queryposts

getpost

svelikeAJAX