Я создаю родительскую тему фреймворка functions.php
, и в родительском я хочу зарегистрировать все возможные js-файлы, которые я часто использую, и если я хочу, чтобы он загружал их, в дочернем functions.php
я просто должен использовать wp_enqueue_script()
.
Но это не работает…
Любая подсказка, почему?
Дочерний файл functions.php загружается перед родительским functions.php, поэтому вы регистрируете их после постановки в очередь. Вместо этого попробуйте поставить скрипты в очередь на крючок
'after_setup_theme'
.Хорошо, проверю это прямо сейчас!!!
Спасибо, работает отлично… но я поставил его на хук «init»
Я по-прежнему советую не разделять вещи таким образом — регистрация скриптов в родительском файле и постановка их в очередь в дочернем файле может работать для вашего использования, но это усложняет задачу для разработчиков, которые приходят позже и хотят создать новый дочерний файл. тема — они должны воспроизвести весь код, который вы ставите в очередь, чтобы заставить его работать. Предполагается, что дочерняя тема изменяет родительскую, а не воспроизводит исходную дочернюю тему родителя…
В целом я согласен с вашими комментариями о плохой форме, но я думаю, что это не применимо в этом случае использования. То, что он @Eduplessis делает в своей родительской теме, по сути то же самое, что WordPress делает в
wp_default_scripts()
in/wp-includes/script-loader.php
; т.е. он регистрирует свои пользовательские сценарии с помощьюwp_register_script()
, поэтому его дочерние темы должны вызывать только более простую формуwp_enqueue_script()
вместо того, чтобы указывать полное имя файла сценария и путь из каталога родительской темы. ПОМОЩЬ.Я согласен с тем, что у шаблона есть свое применение… но я исхожу из того, что мне приходилось отлаживать плохо документированные дочерние темы и пытаться помочь клиентам понять, когда на их сайте вызываются разные функции. Так как
wp_register_script
иwp_enqueue_script
работают вместе, их наличие в разных файлах может затруднить их отслеживание позже.Спасибо за ваши комментарии. Фреймворк тем без какой-либо документации — это плохо… или любой проект в gen. но так как эта структура тем предназначена только для ускорения моей разработки, и я всегда делаю небольшой документ… я думаю, что это правильный выбор — поместить все регистры всех моих скриптов в мой родитель и конкретную нагрузку в дочерний… точно так же, как WordPress делать со всеми js, включенными по умолчанию.
Плохой тон так разбивать код. Вы всегда должны располагать свои функции и хуки, которые их вызывают, в одном и том же месте, чтобы упростить отладку.
Тем не менее, если вы поместите свои
wp_enqueue_script()
вызовы вfunctions.php
файл родительской темы, все будет работать так, как должно? Если нет, возможно, происходит что-то еще… и нам нужно увидеть ваш код, чтобы диагностировать и исправить его.