Почему регистрация и постановка в очередь имеют значение
это должно быть вовремя - раньше, чем будет запущен скрипт / стиль для вывода на страницу, иначе будет слишком поздно;
это должно быть условно - в противном случае вы загружаете вещи там, где они вам не нужны, и вызывают проблемы с производительностью и функциональностью, для этого вам нужно, чтобы среда WP была загружена до поздней стадии.
Три этапа процесса
регистрация - это объясняет детали WP о скрипте / стиле и заставляет хранить эту информацию;
enqueue - (часто объединяется с регистрацией в одном wp_enqueue_*()
вызове) - это говорит WP о необходимости добавления сценариев / стиля в очередь в соответствии с его настройками (зависимости, загрузка верхнего / нижнего колонтитула).
print - это происходит, когда WP обрабатывает очередь, пытается загрузить что-то конкретное для себя или когда вы явно делаете это с помощью wp_print_*()
функции.
Внешняя структура функций и крючков
wp_head()
wp_footer()
wp_footer
- (10)
wp_print_footer_scripts()
Это идет намного глубже, но это просто и достаточно для важных моментов:
wp_enqueue_scripts
является наиболее подходящим хуком для регистрации и организации сценариев и стилей в интерфейсе и предназначен именно для этого;
init
не имеет к этому никакого отношения, это будет работать, но - прежняя рекомендация Кодекса использовать только его была неправильной ;
вы можете использовать сценарии очередей (не стили) для нижнего колонтитула в любой точке до wp_print_footer_scripts()
вызова;
wp_print_*
Хуки НЕ подходят для регистра / очереди , они являются точками в коде, когда вывод уже происходит. Они подходят для ручного / пользовательского сценария / вывода стиля.
А как насчет админа?
Ну, функциональность там еще сложнее, сложнее и вложеннее.
для начала просто используйте admin_enqueue_scripts
ловушку (она передается $hook_suffix
глобально для условных вещей ) для всего, это будет хорошо в большинстве случаев;
когда вам нужно что-то сложное - посмотрите admin-header.php
и откопайте оттуда соответствующие крючки.
А как насчет входа?
Там конкретный крючок назван login_enqueue_scripts
.
admin_print_scripts-{xxx}
. Я обнаружил, чтоadmin_print_scripts
это называется, но не с,-{xxx}
например.-edit.php
например. Насколько правдив этот ответ о постановке в очередьadmin_print_scripts-xxx
и что вы порекомендуете вместо него - предположим, я хочу включить сценарии / стили в страницу добавления / редактирования пользовательского типа записи (для метабокса)*print*
крючков, если вы действительно не знаете, зачем они вам нужны. И в целом они для печати , а не очереди .admin_enqueue_scripts
hooks передает$hook_suffix
переменную, которая используется в тех динамических ловушках.$hook_suffix
выглядит как post.php на моей странице редактирования портфолио, почему это так? Я подумал, что это также edit.php, как мне тогда определить, редактирую ли я / публикую портфель, а не нормальную публикацию?add_*_page()
функции), но на родных экранах WP это могут быть разные вещи.