SlideShare a Scribd company logo
1 of 25
Najčešće greške WordPress developera 
S I B IN G RA Š IĆ / E T FOVAC .COM / S I B IN.G RAS IC@ZOOL.RS
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
Najčešće greške u organizaciji 
I KAKO IH ZAOBIĆI
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?
O čemu voditi računa? 
Overhead Kompatibilnost 
Core 
funkcionalnost? 
KISS
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?
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
„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
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)
Greške u kodiranju 
SVI GREŠIMO – BITNO JE DA NAUČIMO NEŠTO IZ 
GREŠAKA
Greške u kodiranju 
Layering male Template 
hijerarhija 
CSS & JS 
loading srednje 
query 
posts 
get 
posts 
AJAX velike
Template hijerarhija
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.)
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
Raslojavanje - primeri
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
Učitavanje CSS-a i JS-a 
Nepravilno: 
Pravilno:
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
Primer zloupotrebe 
• Upotreba query_posts na ovaj način: 
- zahteva kondicional 
- pravi novi SQL upit 
- pravi šum u template fajlu
Pravilan način 
• Pre_get_posts: 
- vrši izmenu pre svih filtera 
- ne pravi problem sa paginacijom 
- nema overhead 
- poboljšava keširanje
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
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
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
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
Pitanja? 
Layering male Template 
hijerarhija 
CSS & 
JS 
loading 
srednje 
query 
posts 
get 
post 
s 
AJAX velike

More Related Content

Similar to Sibin Grasić - Najčešće greške WP developera

PHP za pocetnike - predavanje 11
PHP za pocetnike - predavanje 11PHP za pocetnike - predavanje 11
PHP za pocetnike - predavanje 11Nermin Sehic
 
Studija slučaja - phishing
Studija slučaja - phishingStudija slučaja - phishing
Studija slučaja - phishingBoban Lapcevic
 
Projektovanje web aplikacija
Projektovanje web aplikacijaProjektovanje web aplikacija
Projektovanje web aplikacijaDamjan Pavlica
 
Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress
 Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress
Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPressDamir Bodor
 
Front-end development iz ugla .NET programera
Front-end development iz ugla .NET programera�Front-end development iz ugla .NET programera�
Front-end development iz ugla .NET programeraStartit
 
Let's talk about CSS
Let's talk about CSSLet's talk about CSS
Let's talk about CSSNikola Drobac
 
Napredne tehnike razvoja web aplikacija - Zend Framework
Napredne tehnike razvoja web aplikacija - Zend FrameworkNapredne tehnike razvoja web aplikacija - Zend Framework
Napredne tehnike razvoja web aplikacija - Zend FrameworkSaša Stamenković
 
ET21_44_IS.pdf
ET21_44_IS.pdfET21_44_IS.pdf
ET21_44_IS.pdfjusteen80
 
Getting bigger with flask
Getting bigger with flaskGetting bigger with flask
Getting bigger with flaskJosipKatalinic
 
Automatizacija u Front-end razvojnom procesu
Automatizacija u Front-end razvojnom procesuAutomatizacija u Front-end razvojnom procesu
Automatizacija u Front-end razvojnom procesuDalibor Gogic
 

Similar to Sibin Grasić - Najčešće greške WP developera (16)

PHP za pocetnike - predavanje 11
PHP za pocetnike - predavanje 11PHP za pocetnike - predavanje 11
PHP za pocetnike - predavanje 11
 
Studija slučaja - phishing
Studija slučaja - phishingStudija slučaja - phishing
Studija slučaja - phishing
 
Decouple Goals
Decouple GoalsDecouple Goals
Decouple Goals
 
Projektovanje web aplikacija
Projektovanje web aplikacijaProjektovanje web aplikacija
Projektovanje web aplikacija
 
Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress
 Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress
Nikola Petrov-Bezbednost WordPress sajtova - Uvod u WordPress
 
Unapređivanje WordPress veb-sajta
Unapređivanje WordPress veb-sajtaUnapređivanje WordPress veb-sajta
Unapređivanje WordPress veb-sajta
 
Web logs: Collecting and analysing - Nikola Krgovic
Web logs: Collecting and analysing - Nikola KrgovicWeb logs: Collecting and analysing - Nikola Krgovic
Web logs: Collecting and analysing - Nikola Krgovic
 
Front-end development iz ugla .NET programera
Front-end development iz ugla .NET programera�Front-end development iz ugla .NET programera�
Front-end development iz ugla .NET programera
 
Let's talk about CSS
Let's talk about CSSLet's talk about CSS
Let's talk about CSS
 
Napredne tehnike razvoja web aplikacija - Zend Framework
Napredne tehnike razvoja web aplikacija - Zend FrameworkNapredne tehnike razvoja web aplikacija - Zend Framework
Napredne tehnike razvoja web aplikacija - Zend Framework
 
Java Script.ppt
Java Script.pptJava Script.ppt
Java Script.ppt
 
ET21_44_IS.pdf
ET21_44_IS.pdfET21_44_IS.pdf
ET21_44_IS.pdf
 
Getting bigger with flask
Getting bigger with flaskGetting bigger with flask
Getting bigger with flask
 
Automatizacija u Front-end razvojnom procesu
Automatizacija u Front-end razvojnom procesuAutomatizacija u Front-end razvojnom procesu
Automatizacija u Front-end razvojnom procesu
 
Apache solr
Apache solrApache solr
Apache solr
 
Šta je Bootstrap?
Šta je Bootstrap?Šta je Bootstrap?
Šta je Bootstrap?
 

More from Startit

Uvod u Big Data i nauku o podacima
Uvod u Big Data i nauku o podacimaUvod u Big Data i nauku o podacima
Uvod u Big Data i nauku o podacimaStartit
 
Sales meetup #2 / Katarina Mijatovic
Sales meetup #2 / Katarina MijatovicSales meetup #2 / Katarina Mijatovic
Sales meetup #2 / Katarina MijatovicStartit
 
Sales meetup #2 / Mario Krivokapic
Sales meetup #2 / Mario KrivokapicSales meetup #2 / Mario Krivokapic
Sales meetup #2 / Mario KrivokapicStartit
 
How to sell your company
How to sell your companyHow to sell your company
How to sell your companyStartit
 
10% Human and Machine Learning
10% Human and Machine Learning10% Human and Machine Learning
10% Human and Machine LearningStartit
 
Optičko prepoznavanje teksta
Optičko prepoznavanje tekstaOptičko prepoznavanje teksta
Optičko prepoznavanje tekstaStartit
 
Black art of writing SSMS extensions
Black art of writing SSMS extensionsBlack art of writing SSMS extensions
Black art of writing SSMS extensionsStartit
 
iPhone u Srbiji, Ivan Jelić - Mobile Monday Serbia #11
iPhone u Srbiji, Ivan Jelić - Mobile Monday Serbia #11iPhone u Srbiji, Ivan Jelić - Mobile Monday Serbia #11
iPhone u Srbiji, Ivan Jelić - Mobile Monday Serbia #11Startit
 
MTS & iPhone - Mobile Monday Serbia #11
MTS & iPhone - Mobile Monday Serbia #11MTS & iPhone - Mobile Monday Serbia #11
MTS & iPhone - Mobile Monday Serbia #11Startit
 
Igrice za bakice - Ivan Francuski, Eipix - GameUp
Igrice za bakice - Ivan Francuski, Eipix - GameUpIgrice za bakice - Ivan Francuski, Eipix - GameUp
Igrice za bakice - Ivan Francuski, Eipix - GameUpStartit
 
Igrice za bakice - pravljenje igara za ne-gejmere, Ivan Francuski iz Eipixa -...
Igrice za bakice - pravljenje igara za ne-gejmere, Ivan Francuski iz Eipixa -...Igrice za bakice - pravljenje igara za ne-gejmere, Ivan Francuski iz Eipixa -...
Igrice za bakice - pravljenje igara za ne-gejmere, Ivan Francuski iz Eipixa -...Startit
 
Fliiby path - Brothers Divjak, founders of Fliiby at WWVrsac Conference
Fliiby path - Brothers Divjak, founders of Fliiby at WWVrsac ConferenceFliiby path - Brothers Divjak, founders of Fliiby at WWVrsac Conference
Fliiby path - Brothers Divjak, founders of Fliiby at WWVrsac ConferenceStartit
 
Prepoznajte šansu i zgrabite je, Adrian Đura, osnivač Eipixa - WWVršac
Prepoznajte šansu i zgrabite je, Adrian Đura, osnivač Eipixa - WWVršacPrepoznajte šansu i zgrabite je, Adrian Đura, osnivač Eipixa - WWVršac
Prepoznajte šansu i zgrabite je, Adrian Đura, osnivač Eipixa - WWVršacStartit
 
Zašto sam posato preduzetnik? Rade Joksimović, Loyalis - Startit Meetup #17
Zašto sam posato preduzetnik? Rade Joksimović, Loyalis - Startit Meetup #17Zašto sam posato preduzetnik? Rade Joksimović, Loyalis - Startit Meetup #17
Zašto sam posato preduzetnik? Rade Joksimović, Loyalis - Startit Meetup #17Startit
 
Zašto biti preduzetnik? Nikola Vučićević, osnivač Brides2Bride - Startit Meet...
Zašto biti preduzetnik? Nikola Vučićević, osnivač Brides2Bride - Startit Meet...Zašto biti preduzetnik? Nikola Vučićević, osnivač Brides2Bride - Startit Meet...
Zašto biti preduzetnik? Nikola Vučićević, osnivač Brides2Bride - Startit Meet...Startit
 
Zašto dati otkaz i postati preduzetnik? Mad Head Games Startit Meetup #17
Zašto dati otkaz i postati preduzetnik? Mad Head Games Startit Meetup #17Zašto dati otkaz i postati preduzetnik? Mad Head Games Startit Meetup #17
Zašto dati otkaz i postati preduzetnik? Mad Head Games Startit Meetup #17Startit
 
Logstash + Elasticsearch + Kibana Presentation on Startit Tech Meetup
Logstash + Elasticsearch + Kibana Presentation on Startit Tech MeetupLogstash + Elasticsearch + Kibana Presentation on Startit Tech Meetup
Logstash + Elasticsearch + Kibana Presentation on Startit Tech MeetupStartit
 
Docker for Fun and Profit at Startit Tech Meetup
Docker for Fun and Profit at Startit Tech MeetupDocker for Fun and Profit at Startit Tech Meetup
Docker for Fun and Profit at Startit Tech MeetupStartit
 
Development box at Startit Tech Meetup
Development box at Startit Tech MeetupDevelopment box at Startit Tech Meetup
Development box at Startit Tech MeetupStartit
 
Startit Meetup #12 - Brainstorm
Startit Meetup #12 - BrainstormStartit Meetup #12 - Brainstorm
Startit Meetup #12 - BrainstormStartit
 

More from Startit (20)

Uvod u Big Data i nauku o podacima
Uvod u Big Data i nauku o podacimaUvod u Big Data i nauku o podacima
Uvod u Big Data i nauku o podacima
 
Sales meetup #2 / Katarina Mijatovic
Sales meetup #2 / Katarina MijatovicSales meetup #2 / Katarina Mijatovic
Sales meetup #2 / Katarina Mijatovic
 
Sales meetup #2 / Mario Krivokapic
Sales meetup #2 / Mario KrivokapicSales meetup #2 / Mario Krivokapic
Sales meetup #2 / Mario Krivokapic
 
How to sell your company
How to sell your companyHow to sell your company
How to sell your company
 
10% Human and Machine Learning
10% Human and Machine Learning10% Human and Machine Learning
10% Human and Machine Learning
 
Optičko prepoznavanje teksta
Optičko prepoznavanje tekstaOptičko prepoznavanje teksta
Optičko prepoznavanje teksta
 
Black art of writing SSMS extensions
Black art of writing SSMS extensionsBlack art of writing SSMS extensions
Black art of writing SSMS extensions
 
iPhone u Srbiji, Ivan Jelić - Mobile Monday Serbia #11
iPhone u Srbiji, Ivan Jelić - Mobile Monday Serbia #11iPhone u Srbiji, Ivan Jelić - Mobile Monday Serbia #11
iPhone u Srbiji, Ivan Jelić - Mobile Monday Serbia #11
 
MTS & iPhone - Mobile Monday Serbia #11
MTS & iPhone - Mobile Monday Serbia #11MTS & iPhone - Mobile Monday Serbia #11
MTS & iPhone - Mobile Monday Serbia #11
 
Igrice za bakice - Ivan Francuski, Eipix - GameUp
Igrice za bakice - Ivan Francuski, Eipix - GameUpIgrice za bakice - Ivan Francuski, Eipix - GameUp
Igrice za bakice - Ivan Francuski, Eipix - GameUp
 
Igrice za bakice - pravljenje igara za ne-gejmere, Ivan Francuski iz Eipixa -...
Igrice za bakice - pravljenje igara za ne-gejmere, Ivan Francuski iz Eipixa -...Igrice za bakice - pravljenje igara za ne-gejmere, Ivan Francuski iz Eipixa -...
Igrice za bakice - pravljenje igara za ne-gejmere, Ivan Francuski iz Eipixa -...
 
Fliiby path - Brothers Divjak, founders of Fliiby at WWVrsac Conference
Fliiby path - Brothers Divjak, founders of Fliiby at WWVrsac ConferenceFliiby path - Brothers Divjak, founders of Fliiby at WWVrsac Conference
Fliiby path - Brothers Divjak, founders of Fliiby at WWVrsac Conference
 
Prepoznajte šansu i zgrabite je, Adrian Đura, osnivač Eipixa - WWVršac
Prepoznajte šansu i zgrabite je, Adrian Đura, osnivač Eipixa - WWVršacPrepoznajte šansu i zgrabite je, Adrian Đura, osnivač Eipixa - WWVršac
Prepoznajte šansu i zgrabite je, Adrian Đura, osnivač Eipixa - WWVršac
 
Zašto sam posato preduzetnik? Rade Joksimović, Loyalis - Startit Meetup #17
Zašto sam posato preduzetnik? Rade Joksimović, Loyalis - Startit Meetup #17Zašto sam posato preduzetnik? Rade Joksimović, Loyalis - Startit Meetup #17
Zašto sam posato preduzetnik? Rade Joksimović, Loyalis - Startit Meetup #17
 
Zašto biti preduzetnik? Nikola Vučićević, osnivač Brides2Bride - Startit Meet...
Zašto biti preduzetnik? Nikola Vučićević, osnivač Brides2Bride - Startit Meet...Zašto biti preduzetnik? Nikola Vučićević, osnivač Brides2Bride - Startit Meet...
Zašto biti preduzetnik? Nikola Vučićević, osnivač Brides2Bride - Startit Meet...
 
Zašto dati otkaz i postati preduzetnik? Mad Head Games Startit Meetup #17
Zašto dati otkaz i postati preduzetnik? Mad Head Games Startit Meetup #17Zašto dati otkaz i postati preduzetnik? Mad Head Games Startit Meetup #17
Zašto dati otkaz i postati preduzetnik? Mad Head Games Startit Meetup #17
 
Logstash + Elasticsearch + Kibana Presentation on Startit Tech Meetup
Logstash + Elasticsearch + Kibana Presentation on Startit Tech MeetupLogstash + Elasticsearch + Kibana Presentation on Startit Tech Meetup
Logstash + Elasticsearch + Kibana Presentation on Startit Tech Meetup
 
Docker for Fun and Profit at Startit Tech Meetup
Docker for Fun and Profit at Startit Tech MeetupDocker for Fun and Profit at Startit Tech Meetup
Docker for Fun and Profit at Startit Tech Meetup
 
Development box at Startit Tech Meetup
Development box at Startit Tech MeetupDevelopment box at Startit Tech Meetup
Development box at Startit Tech Meetup
 
Startit Meetup #12 - Brainstorm
Startit Meetup #12 - BrainstormStartit Meetup #12 - Brainstorm
Startit Meetup #12 - Brainstorm
 

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

  • 1. Najčešće greške WordPress developera S I B IN G RA Š IĆ / E T FOVAC .COM / S I B IN.G RAS IC@ZOOL.RS
  • 2. 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
  • 3. Najčešće greške u organizaciji I KAKO IH ZAOBIĆI
  • 4. 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?
  • 5. O čemu voditi računa? Overhead Kompatibilnost Core funkcionalnost? KISS
  • 6. 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?
  • 7. 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
  • 8. „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
  • 9. 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)
  • 10. Greške u kodiranju SVI GREŠIMO – BITNO JE DA NAUČIMO NEŠTO IZ GREŠAKA
  • 11. Greške u kodiranju Layering male Template hijerarhija CSS & JS loading srednje query posts get posts AJAX velike
  • 13. 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.)
  • 14. 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
  • 16. 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
  • 17. Učitavanje CSS-a i JS-a Nepravilno: Pravilno:
  • 18. 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
  • 19. Primer zloupotrebe • Upotreba query_posts na ovaj način: - zahteva kondicional - pravi novi SQL upit - pravi šum u template fajlu
  • 20. Pravilan način • Pre_get_posts: - vrši izmenu pre svih filtera - ne pravi problem sa paginacijom - nema overhead - poboljšava keširanje
  • 21. 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
  • 22. 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
  • 23. 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
  • 24. 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
  • 25. Pitanja? Layering male Template hijerarhija CSS & JS loading srednje query posts get post s AJAX velike