Vreau să încarc un fișier .js în tema mea copil

5 feb. 2015, 12:08:29
Vizualizări: 89.6K
Voturi: 22

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ă?

4
Comentarii

wp_enqueue_script( 'custom-script.js', get_stylesheet_directory_uri() . 'js/custom-script.js', array('jquery') );

Pieter Goosen Pieter Goosen
5 feb. 2015 12:12:31

@Pieter Am adaptat modificarea ta dar încă nu funcționează. Iată ce am în fișierul meu .js și funcționează dacă îl pun direct în page.php de exemplu: <script> if (jQuery) {

alert("Biblioteca jQuery este încărcată!");

} else {

alert("Biblioteca jQuery nu a fost găsită!");

} </script>

MrKainig MrKainig
5 feb. 2015 12:19:48

@Pieter OK, am pus codul în întrebare

MrKainig MrKainig
5 feb. 2015 12:29:44

Elimină tag-urile script din fișierul tău js

Pieter Goosen Pieter Goosen
5 feb. 2015 12:34:03
Toate răspunsurile la întrebare 3
11
43

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.

5 feb. 2015 12:30:19
Comentarii

De ce nu folosești get_stylesheet_directory_uri()?

Pieter Goosen Pieter Goosen
5 feb. 2015 12:33:24

Ambele funcționează conform testelor mele.

Brad Dalton Brad Dalton
5 feb. 2015 12:37:18

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

MrKainig MrKainig
5 feb. 2015 12:37:46

Da, o fac, dar get_stylesheet_directory_uri() este mai rapid :-)

Pieter Goosen Pieter Goosen
5 feb. 2015 12:39:15

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.

Brad Dalton Brad Dalton
5 feb. 2015 12:42:18

@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.

MrKainig MrKainig
5 feb. 2015 13:11:42

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

Brad Dalton Brad Dalton
5 feb. 2015 14:28:02

@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.

Pieter Goosen Pieter Goosen
5 feb. 2015 14:43:32

@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 :)

MrKainig MrKainig
6 feb. 2015 11:15:30

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.

0xh8h 0xh8h
18 dec. 2016 10:20:23

a doua metodă a funcționat perfect pentru mine doar schimbând custom-script în parent-script.

NomanJaved NomanJaved
20 sept. 2019 17:21:33
Arată celelalte 6 comentarii
0

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ă!

3 iun. 2020 13:10:57
0

De obicei, procedez astfel:

Accesează tema copil

  1. creează un folder js în tema copil
  2. 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 );
}
16 apr. 2021 19:07:59