All'interno del core di WordPress, nella directory wp-includes
, si trova il file class.wp-scripts.php
che contiene la classe WP_Scripts
. Questa classe, che accompagna WordPress sin dagli esordi, è il motore che permette l'inclusione degli script JavaScript sia nel backend che nel frontend di un sito. Vediamola più in dettaglio.
Questa classe svolge vari compiti:
- localizzazione degli script in base all'URL
- inclusione degli script tramite output HTML
- organizzazione degli script in base alle dipendenze
- posizionamento degli script nel footer o nell'header
- caricamento degli script predefiniti di WordPress
Si parte con il metodo WP_Scripts::print_extra_script()
che gestisce gli script:
function print_extra_script( $handle, $echo = true ) {
if ( !$output = $this->get_data( $handle, 'data' ) )
return;
if ( !$echo )
return $output;
echo "<script type='text/javascript'>\n"; // CDATA and type='text/javascript' is not needed for HTML 5
echo "/* <![CDATA[ */\n";
echo "$output\n";
echo "/* ]]> */\n";
echo "</script>\n";
return true;
}
Questo metodo scrive un tag script
con il relativo contenuto (se presente) e restituisce un valore Booleano per notificare l'avvenuta scrittura del tag. In alternativa, se l'output è assente si interrompe subito. Può anche non restituire un output ma limitarsi a memorizzare la stringa HTML.
Il secondo metodo significativo, WP_Scripts::do_item()
è molto più complesso del precedente e necessita di maggiore attenzione. Sostanzialmente, le sue azioni sono:
- aggiunge uno script alla coda di script memorizzata nell'array
WP_Scripts::in_footer
- gestisce la versione degli script
- verifica l'URL degli script
- scrive il contenuto HTML utilizzando sia il metodo
WP_Scripts::print_extra_script()
che impostando la proprietàWP_Scripts::print_html
sulla stringa contenente lo script
WP_Scripts::set_group()
e WP_Scripts::all_deps()
gestiscono materialmente la dipendenza di uno script da un altro. La classe si conclude con i metodi WP_Scripts::do_head_items()
e WP_Scripts::do_footer_items()
che inseriscono rispettivamente gli script nell'header e nel footer delle pagine.