Chcę kolejkować plik .js do motywu podrzędnego

16

Próbowałem umieścić w kolejce niestandardowy plik .js w katalogu potomnym.

W funkcji.php motywu podrzędnego znajduję następujący kod

/* After this. you can override Accessible Zen's pluggable functions or add your own.
 * Remember, do your best to stay accessible! :)
 *
 */
 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' ) );
}

gdzie tylko ta część została zaimplementowana przeze mnie i ma załadować mój custom.script.js z folderu js /

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

Niestety tak nie jest, czy ktoś może pomóc?

* Aktualizacja 2

Kod wygląda teraz tak i działa, nie działał, kiedy właśnie dodałem funkcję do innej add action. Dziękuję wszystkim za pomoc! Nadal zastanawiam się, czy nie ma sposobu, aby trochę wyciąć ten kod.

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' ) );
}

/*add my custom jquery script*/
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' )
);
        }

Do czego służy ta linia?

wp_enqueue_script( 'responsive-menu', get_bloginfo( 'stylesheet_directory' ) . '/js/responsive-menu.js', array( 'jquery' ), '1.0.0' );

Czy to konieczne?

MrKainig
źródło
wp_enqueue_script( 'custom-script.js', get_stylesheet_directory_uri() . 'js/custom-script.js', array('jquery') );
Pieter Goosen
@Pieter Dostosowałem twoją zmianę, ale nadal nie działa. To właśnie mam w moim pliku .js i działa, jeśli umieściłem go bezpośrednio w page.php, na przykład: <script> if (jQuery) {alert ("biblioteka jQuery jest załadowana!"); } else {alert („Nie znaleziono biblioteki jQuery!”); } </script>
MrKainig
@Pieter Okay Zadałem kod w pytaniu
MrKainig
Usuń tagi skryptu z pliku js
Pieter Goosen

Odpowiedzi:

32

Oto działający przykład:

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' )
);
        }

Lub w ten sposób, który najwyraźniej ładuje się szybciej:

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' );

Źródło http://codex.wordpress.org/Function_Reference/wp_enqueue_script

get_template_directory_uri() będzie działać tylko w motywie nadrzędnym.

Brad Dalton
źródło
1
Dlaczego nie używasz get_stylesheet_directory_uri()?
Pieter Goosen
Oba działają w oparciu o moje testy.
Brad Dalton,
Próbowałem pierwszego, ale nie zadziałało. Czy możesz opublikować pełny blog z kodem (w tym moje istniejące i działające kolejki)? Ponieważ nie wiem, jak poprawnie zaimplementować kod z tym, który jest już w moich funkcjach.
Php
2
Tak, ale robią get_stylesheet_directory_uri()to szybciej :-)
Pieter Goosen
To tylko działający przykład. W Twoim imieniu wymagana jest pewna praca, aby dowiedzieć się, jak działa z Twoim kodem. Możesz teraz przerobić kod, aby ładował skrypty w Twoim motywie.
Brad Dalton,