Kada su u pitanju WordPress performanse svaki bajt i milisekund su bitni.
WordPress jezgro (WP Core) zapravo nije težak, ali teme, dodaci i ostale stvari koje se koriste na WordPress sajtovima značajno mogu usportiti celokupno vreme učitavanja stranice.
Postoji mnogo tehnika za ubrzavanje Vašeg WordPress sajta.
Na primer:
- Korišćenje CDN-a
- Korišćenje keširanja u browseru i na serveru
- Hosting plan optimizovan za performanse
- Brze teme
Međutim, da li znate da je u core WordPress-a uključeno mnogo stvari koje verovatno ne morate da koristite i kontrola nad njima može smanjiti veličinu stranice kako bi se brže učitao sadržaj veb stranice.
Sledeće što možete uraditi deli se na dva načina, prvi – korišćenje nekog dodatka i drugi – dodavanjem nekoliko redova koda u functions.php*. Mi više volimo da ne koristimo dodatke ako se stvari mogu uraditi sa dodavanjem / modifikovanjem koda u postojećim datotekama.
Najbolja postavka
Napravite rezervnu kopiju odgovarajuće datoteke koju ćete menjati, za slučaj da nešto pođe po zlu kako bi mogli da je brzo zamenite.
Svi navedeni kodovi se dodaju u functions.php, osim ako drugačije u tekstu nije naznačeno.
Lokacija functions.php fajla je root/wp-content/themes/VAŠA-AKTIVNA-TEMA/functions.php.
Jako je bitno da posedujete aktivnu Child temu kako pri sledećem update-u teme ne bi ostali bez svih izmena.
Kako velika većina tehničkih stvari nema direktan prevod na srpski jezik trudićemo se da uvek naznačimo o čemu se radi.
1. Uklonite nizove upita / Remove query strings
Ako ste analizirali brzinu veb sajta na nekom od popularnih alata za testiranje (GTmetrix, Pingdom, PageSpeed Insights), verovatno ste naišli na preporuku za uklanjanje niza upita (remove query strings) iz statičkih resursa (CSS, JS datoteke).
Posedovanje query stringova u datotekama može dovesti do toga da CDN/dodatak za kešitanje neće keširati datoteke koje poseduju query stringove datoteke; stoga možda nećete koristiti sve predviđene pogodnosti keširanja.
Da biste uklonili query stringove, dodajte sledeći kod u functions.php.
function remove_cssjs_ver( $src ) {
if( strpos( $src, '?ver=' ) )
$src = remove_query_arg( 'ver', $src );
return $src;
}
add_filter( 'style_loader_src', 'remove_cssjs_ver', 10, 2 );
add_filter( 'script_loader_src', 'remove_cssjs_ver', 10, 2 );
2. Uklonite RSD linkove
RSD – Really Simple Discovery je potreban ako nameravate da koristite XML-RPC klijent, pingback itd itd. Ali, u slučaju da Vam ništa od prethodno navedenog nije potrebno, slobodno možete isključiti pingback ili remote client za upravljanje objavom. Skidanje nepotrebnog hedera možete omogućiti dodavanjem sledećeg koda u functions.php:
remove_action( 'wp_head', 'rsd_link' ) ;
3. Onemogućite emotikone/smajlije
Uklonite dodatni kod povezan sa smajlijima iz WordPress-a koji su relativno nedavno dodati za podršku emotikonima u starijim pregledačima.
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('wp_print_styles', 'print_emoji_styles');
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );
4. Uklonite kratke veze / shortlink
Počevši od verzije 3.0, WordPress je dodao kratku vezu (kraću vezu adrese veb stranice, shortlink) u kod zaglavlja(header). Na primer:
<link rel='shortlink' href='https://ivapix.rs/?p=68' />
Ako ne koristite kratke vezu za bilo koju funkcionalnost, možete ih ukloniti dodavanjem sledećeg koda u functions.php:

Subjektivni osećaj brzog WordPress sajta
5. Uklonite ugrađivanje / Disable embeds
WordPress je predstavio oEmbed funkciju u svojoj verziji 4.4, što omogućava bilo kojem veb sajtu da „ugradi“ WordPress post udaljeno.
Dodavanjem sledećeg koda sprečiće druge da ugrade Vaš post na blogu i onemogućiti učitavanje oEmbed JavaScript datoteke.
function disable_embed(){
wp_dequeue_script( 'wp-embed' );
}
add_action( 'wp_footer', 'disable_embed' );
6. Isključivanje XML-RPC / Disable XML-RPC
Da li se od Vas zahteva da koristite WordPress API (XML-RPC) za objavljivanje / editovanje / brisanje objava, uređivanje komentara itd? Takođe ako je XML-RPC omogućen a nije bezbednosno podešen, tj očvršćen može dovesti do DDoS i bruteforce napada.
Ako Vam nije potreban, a šanse su da 95% današnjih korisnika WP-a ne koristi XML-RPC, možete ga isključiti dodavanjem sledećeg koda:
add_filter('xmlrpc_enabled', '__return_false');
7. Sakrijte vidljivost Vaše WordPress verzije
Ovaj savet Vam neće pomoći sa performansama, već više služi za ublažavanje potencialnih curenja informacija. WordPress podrazumevano dodaje generator meta naziva sa detaljima koji su vidljivi u izvornom kodu (source code) kao i u HTTP zaglavlju (header-u).
Da biste uklonili verziju WP-a iz vaših informacija, koristite sledeći kod:
remove_action( 'wp_head', 'wp_generator' ) ;
8. Uklonite WLManifest link
Da li koristite podršku za Windows Live Writer? Ako ne znate šta je Windows Live Writer, šanse su da Vam i nije potreban, te ga možete isključiti dodavanjem sledeće linije koda:
remove_action( 'wp_head', 'wlwmanifest_link' ) ;


9. Uklonite jQuery Migrate
WordPress je dodao jQuery Migrate u verziji 3.6. Ako koristite najnoviju veryiju jQuery-a i tema/dodataka, velike su šanse da Vam jQuery Migrate uopšte i nije potreban. Novije verzije WordPress instalacija dolaze bez jQuery Migrate-a, a ako ste još uvek iz nekog razloga na staroj verziji WordPress-a možete ukloniti jQuery-migrate.min dodatak putem sledećeg koda:
function deregister_jq() {
if ( !is_admin() ) {
wp_deregister_script('jquery');
}
}
add_action('wp_enqueue_scripts', 'deregister_jq');
10. Isključite self-pingback
Ako Vas nervira self-pingback opcija ili je ne koristite / ne znate čemu služi, slobodno je možete isključiti. Kao i u prethodnim primerima, sve što je potrebno da uradite je da dodate sledeći kod u functions.php:
function disable_pingback( &$links )
{
foreach ( $links as $l => $link )
if ( 0 === strpos( $link, get_option( 'home' ) ) )
unset($links[$l]);
}
add_action( 'pre_ping', 'disable_pingback' );
11. Onemogućite ili ograničite revizije
Revizije objava u WordPressu nisu nove i korisne su za vraćanje posta ako browser zabaguje ili ostanete bez internet konekcije. Ali zapitajte se, koliko puta se to dogodilo?
WordPress će podrazumevano sačuvati revizije za svaki nacrt ili objavljeni post, a to može da napumpa bazu podataka vrlo brzo. Revizije možete ili potpuno onemogućiti ili ograničiti broj koliko revizija treba sačuvati.
To možete uraditi dodavanjem sledećeg u datoteku wp-config.php:
Da isključite revizije u potpunosti:
define('WP_POST_REVISIONS', false);
Da ograničite revizije na određeni broj (npr: 3):
define('WP_POST_REVISIONS', 3);
Napomena: ovaj kod mora biti iznad linije koja sadrži ABSPATH, inače neće raditi.
12. Onemogućite Heartbeat API
WordPress koristi Heartbeat API za komunikaciju sa browserom ka serveru tako što često poziva admin-ajax.php. Ovo može usporiti celokupno vreme učitavanja stranice i povećati korišćenje CPU-a servera ako je na shared hostingu.
Ako vaša tema ili neki dodatak ne zahtevaju korišćenje Heartbeat API-ja, slobodno ga možete isključiti dodavanjem sledeće linije koda:
add_action( 'init', 'stop_heartbeat', 1 );
function stop_heartbeat() {
wp_deregister_script('heartbeat');
}
13. Onemogućite Dashicons na front-endu
Dashicons ikonice se koriste u administratorskoj konzoli, tj kontrolnoj tabli, i ako ih ne koristite za učitavanje ikonica na front-endu, možda ćete želeti da ih onemogućite.
Dodavanjem sledećeg koda ćete onemogućiti učitavanje dashicon.min.css fajla na frontendu, dok će ikonice u admin konzoli ostati netaknute:
function wpdocs_dequeue_dashicon() {
if (current_user_can( 'update_core' )) {
return;
}
wp_deregister_style('dashicons');
}
add_action( 'wp_enqueue_scripts', 'wpdocs_dequeue_dashicon' );
14. Isključite Contact Form 7 CSS/JS
Koristite CF7 kao rešenje za kontakt formu i primetili ste da se CSS / JavaScript fajlovi datoteke učitavaju na svakoj stranici a Vi nemate kontakt formu na svakoj stranici?
Na svu sreću vrlo lako možete rešiti taj problem, tj da prestanete učitavati te fajlove na svakoj strani osim na onoj koja zaista poseduje kontakt formu.
Dodajte sledeći kod u functions.php:
add_filter( 'wpcf7_load_js', '__return_false' );
add_filter( 'wpcf7_load_css', '__return_false' );
add_filter( 'wpcf7_load_css', '__return_false' );