Я хочу подключить .js файл в дочернюю тему
Я пытаюсь подключить пользовательский .js файл в каталоге моей дочерней темы.
В файле functions.php моей дочерней темы я нашел следующий код
/* После этого вы можете переопределить подключаемые функции Accessible Zen или добавить свои собственные.
* Помните, старайтесь сохранять доступность! :)
*
*/
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' ) );
}
/*добавляю мой пользовательский jquery скрипт*/
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' );
Она необходима?

Вот рабочий пример:
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()
работает только в родительской теме.

Я попробовал первый вариант, он не сработал. Можешь, пожалуйста, опубликовать полный блок кода (включая мои существующие и работающие enqueues)? Потому что я не знаю, как правильно внедрить твой код в уже имеющийся у меня functions.php

Да, они работают, но get_stylesheet_directory_uri()
быстрее :-)

Это всего лишь рабочий пример. Вам потребуется немного поработать самостоятельно, чтобы понять, как это работает с вашим кодом. Теперь вы можете переработать свой код для загрузки скриптов в вашей теме.

@BradDalton Ну, я попробовал, но у меня не сработало. Нужно ли добавлять второй "add action" или вторую "function", или настраивать "add action", или настраивать "function" — столько вариантов. Если бы кто-то мог кратко объяснить, что является лучшей практикой — или что на самом деле работает — показав, как внедрить этот рабочий пример в мой существующий код, это было бы просто замечательно и спасло бы меня от головной боли.

Что вы уже протестировали? Оба приведенных примера были проверены и работают.

@MrKainig проверьте в консоли браузера, загружается ли ваш скрипт и нет ли ошибок jQuery. Вы удалили теги script из вашего js-файла? Их там быть не должно. Я не вижу причин, почему код из этого ответа не должен работать у вас. Ваш скрипт должен загружаться.

@BradDalton Я добавил функцию внутрь моего существующего add_action, но это не сработало. Когда я скопировал рабочий пример 1:1 под моим существующим add_action, всё заработало идеально.
Пост был снова обновлён. Спасибо, ребята :)

Спасибо за часть "get_template_directory_uri() будет работать только в родительской теме". Это вызывало у меня головную боль пару дней

Проверьте ваши хуки (handles)! Скрипт может не загрузиться, если вы используете хук, который уже занят другим элементом. Если всё выглядит правильно, ошибок нет, но скрипт не загружается, проверьте установку на наличие других элементов, использующих тот же хук.
В моём случае, так как я расширяю родительскую тему через дочернюю, я (по глупости, о чём теперь жалею!) придерживался тех же соглашений по именованию, что и родительская тема. Урок усвоен!

Обычно я делаю так:
Перейдите в дочернюю тему
- создайте папку js внутри дочерней темы
- создайте файл script.js внутри папки js
затем вставьте этот код в файл 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 );
}
