Загрузка моего файла main.js из дочерней темы

Вопрос или проблема

Я создал дочернюю тему на основе оригинальной родительской темы. Завершив работу, я узнал, что стандартная практика в индустрии — создавать дочернюю тему (желательно с самого начала). Мне удалось успешно перенести 99,9% темы в дочернюю, однако по какой-то причине я не могу перенести один единственный js файл (main.js) в папку активов дочерней темы. Изображения, стилевые таблицы, шрифты и т.д. были успешно перенесены в дочернюю тему, но если я переношу файл main.js, мой параллакс-скролл (тест) перестает работать. Мне приходится оставлять этот файл в его оригинальном местоположении в родительской папке, чтобы эта функция работала. Это не идеально.

Я попробовал все мыслимые комбинации функций enqueue, register и wpb_adding_scripts(), которые смог найти, но ничего не работает. Этот файл, похоже, работает только когда он находится в папке родительской темы, почему так?

Замечание: main.js загружается на моей странице представления, но все равно не работает, когда файл находится в дочерней теме…

footer.php

вставьте описание изображения сюда

Структура папок

h
Любая помощь будет оценена

Спасибо

В строке 18 файла functions.php вашей дочерней темы вы подключаете main.js с помощью get_template_directory_uri(). Эта функция возвращает путь к вашей родительской теме. Попробуйте заменить ее на get_stylesheet_directory_uri(), которая вернет путь к корневой директории вашей дочерней темы.

Не могу вас винить за то, что не заметили разницу. Запись на developer.wordpress.org для get_template_directory_uri() довольно скудна на детали. Запись на codex.wordpress.org для get_template_directory гораздо яснее, и две функции тесно связаны (первая возвращает URL, вторая возвращает путь к файловой системе), так что вы можете сделать вывод о том, что делает одна, исходя из другой.

Из записи кода для get_template_directory:

Получает абсолютный путь (например: /home/user/public_html/wp-content/themes/my_theme) к директории текущей темы.

Если используется дочерняя тема, будет возвращен абсолютный путь к директории родительской темы. Используйте get_stylesheet_directory(), чтобы получить абсолютный путь к директории дочерней темы.


Также, в будущем, пожалуйста, постарайтесь копировать и вставлять код в текст вопроса вместо того, чтобы делать скриншоты; так будет легче для нас копировать, редактировать и отвечать 🙂

Ответ или решение

Как загружать файл main.js из дочерней темы WordPress

Создание дочерней темы в WordPress — это правильный шаг в веб-разработке, позволяющий сохранять изменения независимо от обновлений родительской темы. Перемещение файлов, в частности JavaScript, из родительской темы в дочернюю может иногда вызвать проблемы, как в вашем случае с файлом main.js. Рассмотрим, как правильно загрузить этот файл и возможные причины возникновения проблем.

1. Причины неработоспособности скрипта

На первый взгляд, если ваш файл main.js загружается при его размещении в родительской теме, но не работает при переносе в дочернюю, возможно, существует несколько причин:

  • Неправильный путь к файлу: Если вы используете get_template_directory_uri(), это приведет к обращению к родительской теме, что может быть причиной проблемы.
  • Зависимости других скриптов: Убедитесь, что другие скрипты, от которых зависит ваш main.js, также загружаются.
  • Проблемы с порядком загрузки: Возможно, ваш скрипт загружается в неправильное время (например, до jQuery, если вы его используете).

2. Правильное использование функций WordPress

Чтобы ваш скрипт загружался корректно из дочерней темы, необходимо использовать правильные функции для получения URL:

function my_child_theme_scripts() {
    wp_enqueue_script('main-js', get_stylesheet_directory_uri() . '/assets/js/main.js', array('jquery'), null, true);
}
add_action('wp_enqueue_scripts', 'my_child_theme_scripts');
  • get_stylesheet_directory_uri(): Эта функция возвращает URL-адрес вашей дочерней темы, что и нужно для правильного подключения файлов.
  • array('jquery'): Если ваш скрипт зависит от jQuery, указывайте его как зависимость, чтобы загрузить его прежде.
  • true: Это указывает WordPress загружать скрипт внизу страницы, что обычно рекомендуется.

3. Проверка консоли разработчика

Полезной практикой является открытие консоли разработчика (используйте F12 в большинстве браузеров) и проверка на наличие ошибок JavaScript. Также лучше проверить, действительно ли файл main.js загружается из дочерней темы, а не из родительской:

  1. В консоли перейдите на вкладку "Network".
  2. Отфильтруйте по "JS" и найдите main.js.
  3. Убедитесь, что URL содержит путь к дочерней теме. Например: https://ваш-сайт/wp-content/themes/ваша-дочерняя-тема/assets/js/main.js.

4. Варианты отладки

Если скрипт по-прежнему не работает:

  • Отключите кэш: Иногда кэш может мешать динамической загрузке файлов, отключите его и попробуйте снова.
  • Проверьте на конфликты: Убедитесь, что ваш скрипт не конфликтует с другими скриптами или библиотеками.
  • Логи ошибок: Проверьте логи ошибок сервера и консоли браузера, чтобы выявить конкретные проблемы.

Заключение

Следуя приведенным рекомендациям, вы сможете успешно загрузить файл main.js из вашей дочерней темы, а также устранить возможные проблемы. Помните о правильном обращении к функциям WordPress при работе с темами и их структурами. Если у вас возникнут дополнительные вопросы или потребуется помощь, не стесняйтесь обращаться к сообществу разработчиков WordPress.

Оцените материал
Добавить комментарий

Капча загружается...