Я хочу зафіксувати .js файл моєї дочірньої теми


16

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

У function.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( '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' );

Чи потрібно?


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
Pieter Goosen

Відповіді:


32

Ось робочий приклад:

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
MrKainig

2
Так, так, але get_stylesheet_directory_uri()швидше :-)
Пітер Гусен

Це єдиний робочий приклад. Потрібна певна робота від вашого імені, щоб дізнатися, як це працює з вашим кодом. Тепер ви можете переробити свій код, щоб він завантажив ваші сценарії у вашу тему.
Бред Далтон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.