Lo script non si carica a causa di un errore del tipo MIME javascript
Sto cercando di far funzionare il plugin jQuery Masonry su un sito. Ho aggiornato i file del template per inserire le classi appropriate dove il plugin ne ha bisogno. Poi ho accodato i miei script in questo modo:
function masonry_scripts() {
wp_enqueue_script('masonry');
wp_enqueue_script( 'masonry-script', get_template_directory_uri() . '/assets/js/masonry-script.js', array(), false, true );
}
add_action( 'wp_enqueue_scripts', 'masonry_scripts' );
Lo script masonry si carica correttamente, ma il file masonry-script.js no. Ricevo il seguente errore nella console:
Lo script da ".../assets/js/masonry-script.js?ver=5.1.1" è stato caricato anche se il suo tipo MIME ("text/html") non è un tipo MIME JavaScript valido.[Scopri di più] Caricamento fallito per la sorgente "http://thewallmarket.local/wp-content/themes/storefront/assets/js/masonry-script.js?ver=5.1.1".
Purtroppo non posso fornire un link al sito poiché è in sviluppo locale.
Cosa sta causando questo problema? Come posso risolverlo?
Questo errore indica che la risorsa (in questo caso un file JS) che stai cercando di caricare è attesa come file JavaScript ma viene invece interpretata come HTML. Potrebbe essere dovuto a un percorso errato o perché il file locale non è effettivamente un file JS.
Molto probabilmente, lo script che hai fornito all'indirizzo /assets/js/masonry-script.js
non è un file JS valido oppure non può essere caricato come tale. Sembra che tu stia ricevendo un errore "File Non Trovato" (con un reindirizzamento alla tua pagina 404).
Prova questo tra le due righe wp_enqueue_script()
:
printf(get_template_directory_uri() . '/assets/js/masonry-script.js');
Questo dovrebbe stampare il percorso completo del file che stai cercando di caricare. Verifica se riesci ad aprire l'URL stampato in una scheda o finestra separata del browser. Potresti dover modificare l'URL in questo modo:
wp_enqueue_script('masonry-script', untrailingslashit(get_template_directory_uri() . '/assets/js/masonry-script.js', [], false, true);
Controlla anche il contenuto del file locale per verificare che contenga effettivamente codice JavaScript. In caso contrario, potresti dover scaricare una copia corretta.
Se i requisiti del tuo progetto lo consentono e se disponibile, potresti considerare l'uso di jQuery Masonry da un CDN.
Aggiornamento: tema genitore vs tema figlio
Come indicato nel commento nella documentazione del codice WP per get_template_directory_uri()
, se vuoi ottenere l'URL del tema figlio invece del tema genitore, usa get_stylesheet_directory_uri()
.

Grazie per la tua risposta. Il file è un file js e il percorso è corretto. Ma usando il tuo trucco, ho realizzato che il percorso che viene stampato è per il tema genitore, non per il tema child. E ovviamente, io voglio raggiungere il tema child.
Immagino che il problema derivi da get_template_uri(). Non credo che usare il percorso assoluto al file sarebbe il modo corretto per risolvere questo problema, ma non so cosa fare qui. Sai per caso come risolvere?
