Il file functions.php di WordPress è molto importante che ci consente di scrivere funzioni personalizzate; accessibile via FTP oppure dalla bacheca di amministrazione di WordPress, aspetto, editor del tema. Un tema cruciale di WordPress è l'efficienza, come abbiamo già visto in alcune discussioni (le revisioni di WordPress, temi leggeri WordPress, WordPress: Slider Revolution e Page Builders). Vediamo ora un altro aspetto importantissimo ovvero come evitare il caricamento di un plugin dove non serve. Un esempio lo avevamo già trattato nel caso WordPress: come includere Contact Form 7 solo dove serve e il concetto è estendibile anche al resto che quindi vediamo più in dettaglio.
Codice da aggiungere a functions.php
Vediamo questo codice di esempio tratto da un caso pratico, che poi spieghiamo al meglio.
add_action( 'wp_print_scripts', 'deregister_cf7_javascript', 100 );
function deregister_cf7_javascript() {
if ( !is_page(array(13,75)) ) {
wp_deregister_script( 'contact-form-7' ); wp_deregister_script( 'contact-form-7-honeypot' ); wp_deregister_script( 'contact-form-7-simple-recaptcha' );
}
}
add_action( 'wp_print_styles', 'deregister_cf7_styles', 100 );
function deregister_cf7_styles() {
if ( !is_page(array(13,75)) ) {
wp_deregister_style( 'contact-form-7' ); wp_deregister_style( 'contact-form-7-honeypot' ); wp_deregister_style( 'contact-form-7-simple-recaptcha' );
}
}
add_action( 'wp_print_scripts', 'deregister_revslider_javascript', 100 );
function deregister_revslider_javascript() {
if (!is_page(75)) {
wp_deregister_script( 'revslider' );
}
}
add_action( 'wp_print_styles', 'deregister_revslider_styles', 100 );
function deregister_revslider_styles() {
if (!is_page(75) ) {
wp_deregister_style( 'revslider' );
}
}
- la funzione
wp_deregister_script()
disabilita il caricamento dei file JavaScript di quel plugin, mentre wp_deregister_style()
è l'equivalente per quanto riguarda i file CSS
!is_page(array(13,75))
significa "se la pagina ha ID diverso da 13 o 75" (nell'esempio, le pagine con ID 13 e 75 erano le uniche a contenere il form di contatto, quindi se la pagina ha ID differente non avrebbe senso appesantire inutilmente caricando i file del plugin! Allo stesso modo, !is_page(75)
evita il caricamento di "revslider" ovvero il plugin Slider Revolution, che nel caso di studio viene richiesto solo per la pagina con ID 75
- trovare l'ID della pagina è semplice, dalla bacheca di amministrazione, si va nella pagina di interesse e premendo modifica compare nell'URL un parametro del tipo
?post=75
, in questo caso ad esempio il numero è 75)
Ottimizzazione caricamento plugin WordPress: risultati pratici
Ovviamente è importante quantificare quanto stiamo dicendo, quindi vediamo a confronto lo screenshot di DevTools, sezione Network (tramite Brave Browser su Linux Mint 21.2 Cinnamon), nel primo caso senza ottimizzazioni, nel secondo caso con le ottimizzazioni. Per questioni di privacy abbiamo oscurato i dati del dominio, comunque non rilevante. Il risultato parla da solo, caricamento DOM passato da 2,43 secondi a 1,07 secondi e caricamento della pagina (Load) passato da 2,79 secondi a 1,61 secondi. Un miglioramento incredibile di efficienza!
![risultati-ottimizzazione-deregister-functions.php-wordpress](https://i.postimg.cc/ZK990X64/risultati-ottimizzazione-deregister-functionsphp-wordpress.jpg)