wp_enqueue_scripts, wp_register_scripts, wp_print_scripts: я в замешательстве

8
  • Я немного читал на эту тему, но чем больше я читаю - тем больше путаюсь.

  • Может кто-нибудь объяснить мне вкратце, в чем точная разница wp_enqueue_scripts, wp_register_scriptsи wp_print_scripts?

  • Например, у меня есть следующий код в файле functions.php - и он работает, но я не понимаю, почему я не могу использовать wp_print_scriptsтаблицы стилей, тогда как код все еще работает, если я использую wp_enqueue_scriptsфайлы javascript:

    add_action('wp_print_scripts', 'add_my_js');
    function add_my_js(){
        if(!is_admin()){
            wp_enqueue_script('default',  get_bloginfo('stylesheet_directory').'/js/default.js', array('jquery'));
        }
    }
    
    add_action('wp_enqueue_scripts', 'add_my_stylesheet');
    function add_my_stylesheet() {
        wp_register_style('default', get_bloginfo( 'stylesheet_url'));
        wp_enqueue_style( 'default');
    }
ptriek
источник

Ответы:

9

wp_print_scriptsэто действие, которое запускается при выводе скриптов в шаблон. wp_register_scriptи wp_enqueue_scriptявляются функциями для регистрации / постановки в очередь сценариев, которые будут выводиться при запуске wp_print_scripts.

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

обратитесь к ссылке на действие, чтобы увидеть порядок выполнения в запросе:

22. wp_head
23. wp_enqueue_scripts
24. wp_print_styles
25. wp_print_scripts
Milo
источник
Итак, в чем же разница между wp_enqueue_script и wp_register_script?
Джефф К.
3
wp_register_script регистрирует скрипт в WordPress, но не добавляет его в очередь. Если вы также не вызовете wp_enqueue_script, скрипт не появится. Цель этого - позволить вам зарегистрировать ваш скрипт один раз, а затем условно поставить его в другом месте в вашем коде. Это полезно для разработчиков плагинов, где скрипт может быть поставлен в очередь в нескольких местах кода. Вы также можете просто поставить в очередь свой скрипт напрямую, не регистрируя его.
Майло