Come forzare wp_enqueue_scripts a caricarsi alla FINE di <head>?
Sto caricando gli script tramite wp_enqueue_scripts
nel mio child theme.
L'unico problema è che il mio script style.css
viene caricato PRIMA degli script dei plugin, mentre ho bisogno di sovrascrivere il CSS dei plugin con il mio style.css. Quindi deve caricarsi DOPO gli script dei plugin.
Non voglio aggiungere "!important" a tutti i miei stili CSS perché sarebbe noioso e potrebbe rompere alcuni dei miei stili.
Ho provato ad aggiungere una priorità ma non ha avuto alcun effetto sull'ordine di caricamento.
add_action('wp_enqueue_scripts', 'scripts', 9999);
Vorrei semplicemente che wp_enqueue_scripts
venisse eseguito alla fine dell'header, appena prima di </head>
. Come posso farlo? Grazie :-)
AGGIORNAMENTO:
Eureka! Ho trovato la soluzione!
Basta registrare il filtro con:
add_action('wp_print_styles', 'scripts');
wp_print_styles
viene caricato con una priorità di 8, e comunque li posiziona nell'header perché fa parte di wp_head
.
Ho scoperto questo esaminando wp-includes/default-filters.php, quindi grazie per il suggerimento! :-)
wp_enqueue_scripts
viene aggiunto di default con una priorità di 1
a wp_head
. Per i dettagli, vedi wp-includes/default-filters.php
.
Puoi provare a cambiare la priorità:
remove_action( 'wp_head', 'wp_enqueue_scripts', 1 );
add_action( 'wp_head', 'wp_enqueue_scripts', 9999 );
Ma non lo consiglio. Probabilmente c'è una buona ragione per il valore predefinito. Alcuni script potrebbero non funzionare più se modifichi questo valore.

Penso che il modo più compatibile con WordPress per fare questo sia utilizzare il parametro $deps
di wp_enqueue_styles()
. Supponendo che gli stili del plugin siano accodati tramite wp_enqueue_styles()
(cosa che, purtroppo, pochissimi plugin fanno), puoi specificare un array degli handle dei fogli di stile da cui dipendono i tuoi stili, che verranno così caricati successivamente.
