Voglio accodare un file .js al mio tema child
Ho provato ad accodare un file .js personalizzato nella directory del mio tema child.
Nel file functions.php del mio tema child ho trovato il seguente codice
/* Dopo questo, puoi sovrascrivere le funzioni pluggable di Accessible Zen o aggiungere le tue.
* Ricorda, fai del tuo meglio per mantenere l'accessibilità! :)
*
*/
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
wp_enqueue_script( 'custom-script.js', 'js/custom-script.js', array('jquery') );
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
wp_enqueue_style( 'child-style', get_stylesheet_uri(), array( 'parent-style' ) );
}
dove solo questa parte è stata implementata da me e dovrebbe caricare il mio custom-script.js dalla cartella js/
wp_enqueue_script( 'custom-script.js', 'js/custom-script.js', array('jquery') );
Purtroppo non funziona, qualcuno può aiutarmi?
*Aggiornamento 2
Il codice ora appare così e funziona, non funzionava quando ho semplicemente aggiunto la funzione all'altro add_action. Grazie a tutti per l'aiuto! Tuttavia mi chiedo se non ci sia un modo per ridurre questo codice.
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
wp_enqueue_style( 'child-style', get_stylesheet_uri(), array( 'parent-style' ) );
}
/*aggiungi il mio script jquery personalizzato*/
add_action( 'wp_enqueue_scripts', 'menu_scripts' );
function menu_scripts() {
wp_enqueue_script( 'responsive-menu', get_bloginfo( 'stylesheet_directory' ) . '/js/responsive-menu.js', array( 'jquery' ), '1.0.0' );
wp_enqueue_script(
'custom-script',
get_stylesheet_directory_uri() . '/js/custom-script.js',
array( 'jquery' )
);
}
A cosa serve questa riga?
wp_enqueue_script( 'responsive-menu', get_bloginfo( 'stylesheet_directory' ) . '/js/responsive-menu.js', array( 'jquery' ), '1.0.0' );
È necessaria?

Ecco un esempio funzionante:
add_action( 'wp_enqueue_scripts', 'menu_scripts' );
function menu_scripts() {
wp_enqueue_script( 'responsive-menu', get_bloginfo( 'stylesheet_directory' ) . '/js/responsive-menu.js', array( 'jquery' ), '1.0.0' );
wp_enqueue_script(
'custom-script',
get_stylesheet_directory_uri() . '/js/custom_script.js',
array( 'jquery' )
);
}
Oppure così, che apparentemente carica più velocemente:
function my_scripts_method() {
wp_enqueue_script(
'custom-script',
get_stylesheet_directory_uri() . '/js/custom_script.js',
array( 'jquery' )
);
}
add_action( 'wp_enqueue_scripts', 'my_scripts_method' );
Fonte http://codex.wordpress.org/Function_Reference/wp_enqueue_script
get_template_directory_uri()
funzionerà solo in un tema genitore.

Ho provato il primo metodo, ma non ha funzionato. Potresti postare il codice completo (includendo i miei enqueue esistenti che funzionano)? Perché non so come implementare correttamente il tuo codice con quello che ho già nel mio functions.php

È solo un esempio funzionante. Devi fare un po' di lavoro da parte tua per imparare come integrarlo con il tuo codice. Ora puoi modificare il tuo codice in modo che carichi gli script nel tuo tema.

@BradDalton Beh, ho provato ma non ha funzionato per me. Devo aggiungere un secondo "add action" o una seconda "function" o configurare l'"add action" o configurare la "function"? Ci sono così tante possibilità. Se qualcuno potesse spiegarmi brevemente qual è la best practice - o cosa funziona effettivamente - mostrandomi come implementare quell'esempio funzionante nel mio codice esistente. Sarebbe davvero fantastico e mi risparmierebbe un mal di testa

Cosa hai testato finora? Gli esempi sopra sono stati entrambi testati e funzionano.

@MrKainig controlla nella console del browser se il tuo script si sta caricando e se ricevi errori jquery. Hai rimosso i tag script nel tuo file js, dato che non dovrebbero esserci? Non riesco a vedere che il codice in questa risposta non funzioni per te. Il tuo script dovrebbe caricarsi.

@BradDalton Ho aggiunto la funzione all'interno del mio add_action esistente, ma non ha funzionato. Quando ho copiato l'esempio funzionante 1:1 sotto il mio add_action esistente, ha funzionato perfettamente.
Il post è stato aggiornato ancora una volta. Grazie ragazzi :)

Grazie per la parte "get_template_directory_uri() funzionerà solo in un tema genitore." Mi ha fatto venire mal di testa per un paio di giorni

Controlla i tuoi handle! Lo script potrebbe non caricarsi se scegli un handle già utilizzato altrove. Se tutto sembra corretto e non ci sono errori ma lo script non si carica, verifica l'installazione per vedere se qualcos'altro sta usando lo stesso handle.
Nel mio caso, dato che sto estendendo un tema genitore tramite un child theme, ho (stupidamente, a posteriori!) mantenuto la stessa convenzione di denominazione del genitore. Lezione imparata!

Di solito lo faccio in questo modo:
Vai al tema child
- crea una cartella js all'interno del tema child
- crea un file script.js all'interno della cartella js
e poi incolla questo codice all'interno del file script.js:
add_action( 'wp_enqueue_scripts', 'custom_scripts', 10 );
function custom_scripts() {
wp_enqueue_script('custom_javascript', get_stylesheet_directory_uri() . '/js/script.js', array('jquery'), '1.0.0', true );
}
