Nessuna ottimizzazione è mai troppo piccola quando si tratta di prestazioni web. Nel tempo, molti di questi piccoli trucchi e ottimizzazioni possono iniziare a limare un bel po’ il tempo di caricamento complessivo. In un post precedente, abbiamo visto come disabilitare gli emoji in WordPress. Oggi vogliamo condividere con voi il modo in cui disabilitare gli incorporamenti (embed) in WordPress.

Quando è stato rilasciato WordPress 4.4, la funzionalità oEmbed è stata integrata nel core. Probabilmente l’avete già vista o utilizzata prima. Questa funzionalità consente agli utenti di incorporare video di YouTube, tweet e molte altre risorse sui loro siti semplicemente incollando un URL, che WordPress converte automaticamente in un embed e fornisce un’anteprima dal vivo nell’editor visuale. Ad esempio, abbiamo incollato questo URL da Twitter: https://twitter.com/kinsta/status/760489262127120385 ed è stato convertito in quello che vedete di seguito. Potete visualizzare l’elenco ufficiale dei tipi di embed supportati.

Tweet oEmbed
Tweet oEmbed

WordPress è stato a lungo un consumer oEmbed, ma con l’aggiornamento WordPress è diventato un provider oEmbed. Questa funzionalità può essere utile per molti e potreste anche voler mantenerla attiva. Tuttavia, ora viene generata una richiesta HTTP aggiuntiva sul vostro sito WordPress per caricare il file wp-embed.min.js. E questo si carica su ogni singola pagina. Sebbene questo file sia solo 1,7 KB, queste cose si sommano nel tempo. La richiesta stessa a volte è un affare più grande della dimensione del download del contenuto.

(Lettura consigliata: Come Risolvere il Problema degli oEmbed di Facebook in WordPress).

wp embed
wp-embed.min.js

Disabilitate gli Embed in WordPress

Esistono diversi metodi per disabilitare gli incorporamenti in WordPress. Potete farlo con un plugin gratuito, con il codice o incorporare il codice JS minimizzato.

1. Disabilitare gli Embed in WordPress con un Plugin

Il primo modo per disabilitare gli embed è semplicemente quello di utilizzare un plugin gratuito chiamato Disable Embeds, sviluppato da Pascal Birchler, che è uno dei principali core contributor di WordPress.

Plugin WordPress Disable embeds
Plugin WordPress Disable embeds

Questo plugin è super leggero, per l’esattezza pesa solo 3 KB. Al momento in cui scriviamo, vanta oltre 10.000 installazioni attive con un punteggio di 4.8 su 5 stelle. Potete scaricarlo dalla repository di WordPress o cercandolo nella dashboard di WordPress alla voce “Aggiungi nuovo” Plugin. Non c’è nulla da configurare, è sufficiente installare e attivare il plugin e il file JavaScript aggiuntivo sparirà. Ecco quanto offre:

  • Impedisce ad altri di incorporare il vostro sito.
  • Vi impedisce di incorporare altri siti non inseriti nella white-list.
  • Disabilita il caricamento del file JavaScript sul vostro sito WordPress.

Potete sempre incorporare cose da YouTube e Twitter utilizzando i loro script iframe incorporati. Potete anche utilizzare un plugin premium come perfmatters (sviluppato da un membro del team di Kinsta), che vi consente di disabilitare gli embed oltre a permettere altre ottimizzazioni per il vostro sito WordPress.

Disabilitare gli embed nel plugin perfmatters
Disabilitare gli embed nel plugin perfmatters

2. Disabilitare gli Embed con il Codice

Se non desiderate installare un altro plugin, potete anche disabilitare gli embed con il codice. Iniziate creando un backup del vostro sito, poi create un tema child in modo che le vostre modifiche non vadano perse se aggiornate il tema. Poi, aggiungete quanto segue al file functions.php del vostro tema figlio. Nota: il codice proviene dal plugin Disable Embeds descritto sopra.

Importante! La modifica del codice sorgente di un tema WordPress potrebbe bloccare il vostro sito se non eseguito correttamente. Se non vi senti a vostro agio nel farlo, consultate prima uno sviluppatore.
function disable_embeds_code_init() {

 // Remove the REST API endpoint.
 remove_action( 'rest_api_init', 'wp_oembed_register_route' );

 // Turn off oEmbed auto discovery.
 add_filter( 'embed_oembed_discover', '__return_false' );

 // Don't filter oEmbed results.
 remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 );

 // Remove oEmbed discovery links.
 remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );

 // Remove oEmbed-specific JavaScript from the front-end and back-end.
 remove_action( 'wp_head', 'wp_oembed_add_host_js' );
 add_filter( 'tiny_mce_plugins', 'disable_embeds_tiny_mce_plugin' );

 // Remove all embeds rewrite rules.
 add_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' );

 // Remove filter of the oEmbed result before any HTTP requests are made.
 remove_filter( 'pre_oembed_result', 'wp_filter_pre_oembed_result', 10 );
}

add_action( 'init', 'disable_embeds_code_init', 9999 );

function disable_embeds_tiny_mce_plugin($plugins) {
    return array_diff($plugins, array('wpembed'));
}

function disable_embeds_rewrites($rules) {
    foreach($rules as $rule => $rewrite) {
        if(false !== strpos($rewrite, 'embed=true')) {
            unset($rules[$rule]);
        }
    }
    return $rules;
}

Oppure potreste utilizzare la funzione wp_dequeue_script.

function my_deregister_scripts(){
 wp_dequeue_script( 'wp-embed' );
}
add_action( 'wp_footer', 'my_deregister_scripts' );

3. JS in Linea Minimizzato

Una terza opzione sarebbe quella di prendere il contenuto del file wp-embed.min.js e incorporarlo in linea. Questo andrebbe fatto solo con piccoli file o quando non c’è molto codice. È una soluzione che va bene quando volete semplicemente sbarazzarvi della richiesta HTTP ma lasciare comunque il supporto per gli embed.