Я хочу поставить файл .js в мою дочернюю тему

16

Я попытался поставить в очередь пользовательский файл .js в каталоге моей дочерней темы.

В functions.php моей дочерней темы я нахожу следующий код

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

где только эта часть была реализована мной и должна загрузить мой custom.script.js из папки js /

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

К сожалению, это не так, кто-нибудь может помочь?

* Обновление 2

Код теперь выглядит так, и он работает, он не работал, когда я просто добавил функцию к другой add_action. Спасибо всем за помощь! Тем не менее, мне интересно, если нет способа немного сократить этот код.

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

Для чего эта линия?

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

Это необходимо?

MrKainig
источник
wp_enqueue_script( 'custom-script.js', get_stylesheet_directory_uri() . 'js/custom-script.js', array('jquery') );
Питер Гусен
@Pieter Я адаптировал ваше изменение, но оно все еще не работает. Это то, что у меня есть в моем файле .js, и оно работает, если я помещаю его прямо в page.php, например: <script> if (jQuery) {alert ("библиотека jQuery загружена!"); } else {alert ("Библиотека jQuery не найдена!"); } </ script>
MrKainig
@Pieter Хорошо, я поставил код в вопросе
MrKainig
Удалите теги сценариев из вашего js-файла
Питер Гусен,

Ответы:

31

Вот рабочий пример:

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

Или вот так, который загружается быстрее:

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

Источник http://codex.wordpress.org/Function_Reference/wp_enqueue_script

get_template_directory_uri() будет работать только в родительской теме.

Брэд Далтон
источник
1
Почему ты не используешь get_stylesheet_directory_uri()?
Питер Гусен
Они оба работают на основе моего тестирования.
Брэд Далтон
Я попробовал первый, это не сработало. Можете ли вы опубликовать блог с полным кодом (включая мои существующие и рабочие очереди)? Потому что я не знаю, как правильно реализовать ваш код с тем, который уже есть в моих функциях.
Php
2
Да, они делают, но get_stylesheet_directory_uri()это быстрее :-)
Питер Гусен
Это только рабочий пример. От вас требуется некоторая работа, чтобы узнать, как она работает с вашим кодом. Теперь вы можете переработать ваш код, чтобы он загружал ваши скрипты в вашу тему.
Брэд Далтон