Vreau să încarc un fișier .js în tema mea copil
Am încercat să încarc un fișier .js personalizat în directorul temei mele copil.
În fișierul functions.php al temei mele copil am găsit următorul cod
/* După aceasta, puteți suprascrie funcțiile plugabile ale Accessible Zen sau adăuga propriile funcții.
* Nu uitați, faceți tot posibilul să rămâneți accesibili! :)
*
*/
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' ) );
}
unde doar această parte a fost implementată de mine și ar trebui să încarce fișierul custom.script.js din folderul js/
wp_enqueue_script( 'custom-script.js', 'js/custom-script.js', array('jquery') );
Din păcate nu funcționează, poate cineva să ajute?
*Actualizare 2
Codul arată acum așa și funcționează, nu a funcționat când am adăugat doar funcția la celălalt add_action. Mulțumesc tuturor pentru ajutor! Totuși mă întreb dacă nu există o modalitate de a reduce acest cod puțin.
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' ) );
}
/*adaug scriptul meu jquery personalizat*/
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' )
);
}
La ce folosește această linie?
wp_enqueue_script( 'responsive-menu', get_bloginfo( 'stylesheet_directory' ) . '/js/responsive-menu.js', array( 'jquery' ), '1.0.0' );
Este necesară?

Iată un exemplu funcțional:
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' )
);
}
Sau în acest mod, care aparent se încarcă mai rapid:
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' );
Sursa http://codex.wordpress.org/Function_Reference/wp_enqueue_script
get_template_directory_uri()
funcționează doar într-o temă părinte.

Am încercat prima variantă și nu a funcționat. Poți să postezi întregul cod (inclusiv cu enqueue-urile mele existente care funcționează)? Pentru că nu știu cum să implementez corect codul tău împreună cu cel existent în functions.php

Este doar un exemplu funcțional. Este nevoie de ceva muncă din partea ta pentru a învăța cum funcționează cu codul tău. Acum poți reface codul tău pentru a încărca scripturile în tema ta.

@BradDalton Am încercat asta dar nu a funcționat pentru mine. Trebuie să adaug un al doilea "add action" sau o a doua "funcție" sau să configurez "add action" sau să configurez "funcția"? Sunt atât de multe posibilități. Dacă cineva ar putea să-mi explice pe scurt care este cea mai bună practică - sau ce funcționează de fapt - arătându-mi cum să implementez acel exemplu funcțional în codul meu existent. Asta ar fi grozav și m-ar scuti de o durere de cap.

Ce ai testat până acum? Exemplele de mai sus sunt testate și funcționează.

@MrKainig verifică în consola browserului dacă scriptul tău se încarcă și dacă primești erori legate de jquery. Ai eliminat tag-urile de script din fișierul tău js, deoarece nu ar trebui să fie acolo? Nu pot vedea că codul din acest răspuns nu funcționează pentru tine. Scriptul tău ar trebui să se încarce.

@BradDalton Am adăugat funcția în interiorul add_action-ului meu existent, dar nu a funcționat. Când am copiat exemplul funcțional 1:1 sub add_action-ul meu existent, a funcționat perfect.
Postarea a fost actualizată din nou. Mulțumesc băieți :)

Mulțumesc pentru partea "get_template_directory_uri() va funcționa doar într-o temă părinte." Mi-a dat bătăi de cap câteva zile.

Verifică-vă identificatorii (handles)! Scriptul poate eșua la încărcare dacă alegeți un identificator care a fost deja folosit în altă parte. Dacă totul pare corect, fără erori, dar scriptul nu se încarcă, verificați instalarea pentru a vedea dacă altceva folosește același identificator.
În cazul meu, deoarece extind o temă părinte prin intermediul unei teme copil, am (prostesc, privind în urmă!) păstrat aceeași convenție de denumire ca cea a părintelui. Lecție învățată!

De obicei, procedez astfel:
Accesează tema copil
- creează un folder js în tema copil
- creează un fișier script.js în folderul js
apoi inserează acest cod în fișierul 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 );
}
