Почему не подключаются javascript-скрипты в head?
Почему не подключаются javascript-скрипты в head?
В :
<head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title><?php bloginfo('description'); ?></title> <?php wp_head() ?> </head> |
<head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title><?php bloginfo('description'); ?></title> <?php wp_head() ?> </head>
functions.php:
<?php add_action('wp_enqueue_scripts', 'my_style'); add_action('wp_enqueue_scripts', 'my_scripts'); add_action('admin_init', 'disable_content_editor'); // Отключаем редактор страниц в админке поскольку используем ACF function my_style() { wp_enqueue_style('main-style', get_stylesheet_uri()); } function my_scripts() { wp_enqueue_script('main-script', get_template_directory_uri() . '/assets/js/main.min.js', array(), null, true); } function disable_content_editor() { if (isset($_GET['post'])) { $post_ID = $_GET['post']; } else if (isset($_POST['post_ID'])) { $post_ID = $_POST['post_ID']; } if (!isset($post_ID) || empty($post_ID)) { return; } $disabled_IDs = array(2); if (in_array($post_ID, $disabled_IDs)) { remove_post_type_support('page', 'editor'); } } require get_template_directory() . '/functions/ajax-more-news.php'; |
<?php add_action('wp_enqueue_scripts', 'my_style'); add_action('wp_enqueue_scripts', 'my_scripts'); add_action('admin_init', 'disable_content_editor'); // Отключаем редактор страниц в админке поскольку используем ACF function my_style() { wp_enqueue_style('main-style', get_stylesheet_uri()); } function my_scripts() { wp_enqueue_script('main-script', get_template_directory_uri() . '/assets/js/main.min.js', array(), null, true); } function disable_content_editor() { if (isset($_GET['post'])) { $post_ID = $_GET['post']; } else if (isset($_POST['post_ID'])) { $post_ID = $_POST['post_ID']; } if (!isset($post_ID) || empty($post_ID)) { return; } $disabled_IDs = array(2); if (in_array($post_ID, $disabled_IDs)) { remove_post_type_support('page', 'editor'); } } require get_template_directory() . '/functions/ajax-more-news.php';
Удивительно то, что теги со скриптами подключаются только в Firefox, а в других браузерах нет. WTF?
Дополнительно:
Так у вас последний параметр в wp_enqueue_script указан как true, что означает подключать скрипт в wp_footer()
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Ваш скрипт подключается через
wp_enqueue_script()с последним аргументомtrue. Это значит, что WordPress выводит его не вhead, а перед закрывающим</body>. Поэтому в head Вы его не видите — это нормальное поведение.Сейчас у Вас:
wp_enqueue_script( 'main-script', get_template_directory_uri() . '/assets/js/main.min.js', array(), null, true );
Если принципиально нужно вывести именно в head, последний аргумент должен быть
false:wp_enqueue_script( 'main-script', get_template_directory_uri() . '/assets/js/main.min.js', array(), null, false );
Но в большинстве случаев подключать JS в футере лучше: страница быстрее начинает рендериться, а скрипт видит DOM. Если Ваш код зависит от элементов страницы, оставляйте
trueи оборачивайте JS вDOMContentLoadedили ставьте defer.Ещё один момент: если это дочерняя тема, используйте
get_stylesheet_directory_uri(), а неget_template_directory_uri(). Первый указывает на активную дочернюю тему, второй — на родительскую.Проверьте также, что в теме есть оба вызова:
<?php wp_head(); ?> ... <?php wp_footer(); ?>
Если
wp_footer()отсутствует, скрипты с выводом в footer действительно не появятся. Это частая ошибка в самописных темах.Итого: скрипт не “не подключается”, а выводится в футере из-за последнего аргумента
true. Если нужен head — ставьтеfalse. Если нужен правильный WordPress-подход — оставляйте footer, проверьтеwp_footer()и не подключайте JS вручную в header.php.