Prečo potrebuješ revíziu kódu a čomu sa tým dá predísť?
Pomalé načítanie webstránky a nadmerné zaťažovanie hardvérových prostriedkov. To spôsobuje nepríjemné čakanie pre tvojich návštevníkov a tvoj web sa stáva v očiach Google horšie použiteľný, čo ti znižuje ranking.
Problémy s bezpečnosťou môžu radikálne narušiť chod a integritu tvojej webovej stránky. Nenechávaj nič na náhodu a neotváraj dobrovolne dvere individuám, ktoré idú po tvojich dátach, alebo sa ťa snažia zdiskreditovať v očiach tvojej konkurencie a samotných návštevníkov webu.
Dodržiavanie WordPress štandardov okrem iného zarúčí, že tvoj webový projekt nespadne pri najbližšej aktualizácii jadra alebo zle napísaný kód nespôsobí viac škody ako úžitku. Zabezpečíme, že všetky použité pluginy a téma sú kompatibilné medzi sebou. Taktiež otestujeme funkcionalitu na tvojom webe, aby nenastali zbytočné problémy.
Na čo sa konkrétne pozeráme?
Dohliadneme, aby bol tvoj kód bez chýb a kompatibilný medzi sebou, dobre čitateľný a prehľadný, bezpečný a stabilný, čo najlepšie optimalizovaný, rýchly a v neposlednom rade, aby dodržiaval WordPress štandardy a naozaj robil len to čo má bez zbytočného balastu.
K tomu všetkému na základe našho dlhoročného know-how pridáme tipy ako sa o tvoj WordPress starať čo najlepšie, či už si vývojár alebo ho len obsluhuješ.
Bezpečnosť
- Validation, sanitization and escaping (?)
- Ukladanie JavaScriptu alebo CSS do databázy
- Nepoužívať Flash (.swf)
- Kontrola nad odosielanými emailami
- Serializované dáta v PHP majú bezpečnostné riziko, JSON je všeobecne vhodnejší formát
- Pri použítí locate_template(), get_template_part(), include() alebo require() s dynamickými hodnotami je potrebné ich kontrolovať pomocou validate_file() alebo detekovať reťazec „..“
- Treba sa vyvarovať priamemu vkladaniu HTML do DOMu (
.html()
,.innerHTML()
) a radšej použiť.append()
,.prepend()
,.before()
,.after()
…
Výkon
- Používanie funkcií, ktoré nepracujú s cache
- Nepoužívať AJAX volania na admin-ajax.php pri každom načítaní (implementovať vlastné endpointy)
- Ošetriť MySQL dotazy, ktoré používajú
ORDER BY RAND
pri veľkých databázach - Neukladať dáta väčšie ako 1MB do „wp_options“ tabuľky
- Vyhnúť sa automatickým zápisom do databázy na front-ende
- Nepoužívať *_meta pre ukladanie počtu (hlasovanie, pozretia…)
- Funkcie
switch_to_blog()
aget_site_*()
radšej vôbec nepoužiť - Dotazy na databázu bez
LIMIT
u,posts_per_page
(alebonumberposts
) „-1“ a podobne - Cron spúštaných príliš často (menej ako 15 minút), alebo na príliš náročné operácie
- Dotazy na základy „meta_value“ sú náročné a treba sa im vyhnúť (index je na „meta_key“)
- Použitie
post__not_in
radikálne spomalí dotaz na databázu, odporúča sa radšej preskočiť nežiadúce príspevky v PHP
Architektúra kódu
- Udržiavateľnosť a čitateľnosť
- Unikátne predpony pre funkcie, konštanty, slugy…
- Kontrola návratových hodnôt
- Zmena pomocou nastavení ini_set() alebo konfigurácie error_reporting() sa neodporúča
- Nemeniť časovú zónu na servery
- Nerobiť priame dotazy na databázu
- Alterácia databázy
- Zapisovanie do súborového systému
- Nepristupovať priamo ku konštantám (napr. TEMPLATEPATH a STYLESHEETPATH)
- Vyvarovať sa použitiu SESSIONs (kvôli distribuovaným multi-server prostrediam)
- Anonymné funkcie namiesto eval() a create_function() (prehľadnejšie a bezpečnejšie)
- Pluginy majú využívať register_activation_hook() a register_deactivation_hook()
Osvedčené postupy
- Licencie všetkého kódu kompatibilné s GPL (každý potom môže opraviť ak je niečo pokazené, nezabezpečené alebo potrebuje vylepšiť…)
- Nenahrávať subory potrebné len na vývoj (napríklad
.git
,.gitignore
,config.rb
,sass-cache
,grunt/gulp
súbory, PHPUnit testy…) - Pri minifikovaných súboroch (JavaScript) je dobré pribaliť aj ich originálne súbory, lebo inak sú praktické nečitateľné
- Odstrániť nepoužívaný a odkomentovaný kód, ako aj všetky výstupy pre ladenie (debug)
- Nastavenie správnych hlavičiek pre emaily (filtre ako wp_mail_from, wp_mail_from_name…)
- reCaptcha pomôže s prevenciou nevyžiadaných emailov
- Netreba zabudnúť použiť
flush_rewrite_rules()
po zmene štruktúry trvalých odkazov