Как заставить jQuery загружаться первым скриптом в шапке сайта?

17 июл. 2013 г., 20:43:01
Просмотры: 18K
Голосов: 1

Как заставить jQuery загружаться первым скриптом в шапке сайта?

Сейчас он загружается последним:

<link type="text/css" rel="stylesheet" href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap-combined.min.css" />
<link type="text/css" rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/jquery.selectboxit/3.6.0/jquery.selectBoxIt.css" />
<link type="text/css" rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/themes/base/jquery-ui.css" />

<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery.selectboxit/3.6.0/jquery.selectBoxIt.min.js"></script>

<script type='text/javascript' src='http://localhost/wp-includes/js/jquery/jquery.js?ver=1.8.3'></script>

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

<script type='text/javascript' src='http://localhost/wp-includes/js/jquery/jquery.js?ver=1.8.3'></script>

<link type="text/css" rel="stylesheet" href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap-combined.min.css" />
<link type="text/css" rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/jquery.selectboxit/3.6.0/jquery.selectBoxIt.css" />
<link type="text/css" rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/themes/base/jquery-ui.css" />

<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery.selectboxit/3.6.0/jquery.selectBoxIt.min.js"></script>

Мой head выглядит так:

<head>
<meta charset="<?php bloginfo( 'charset' ); ?>" />
<meta name="viewport" content="width=device-width" />
<title><?php wp_title( '|', true, 'right' ); ?></title>
<link rel="profile" href="http://gmpg.org/xfn/11" />

<link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>" />
<?php // Загружает HTML5 JavaScript файл для поддержки HTML5 элементов в старых версиях IE ?>
<!--[if lt IE 9]>
<script src="<?php echo get_template_directory_uri(); ?>/js/html5.js" type="text/javascript"></script>
<![endif]-->

<?php wp_enqueue_script("jquery"); ?>

<link type="text/css" rel="stylesheet" href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap-combined.min.css" />
<link type="text/css" rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/jquery.selectboxit/3.6.0/jquery.selectBoxIt.css" />
<link type="text/css" rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/themes/base/jquery-ui.css" />

<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery.selectboxit/3.6.0/jquery.selectBoxIt.min.js"></script>

<?php wp_head(); ?>

</head>
2
Комментарии

Покажи свой код, пожалуйста. Как ты подключаешь JS-файлы в своей теме?

Krzysiek Dróżdż Krzysiek Dróżdż
17 июл. 2013 г. 21:04:09

@KrzysiekDróżdż Я обновил свой вопрос, добавив код.

Derfder Derfder
17 июл. 2013 г. 22:04:06
Все ответы на вопрос 2
0

Вам необходимо установить переменную зависимостей в функции wp_enqueue_script(), чтобы включить jQuery, jQuery UI core и любые другие необходимые части jQuery UI. Не следует добавлять их через внешние CDN. Для надежности и совместимости лучше использовать встроенные библиотеки WordPress. Если библиотека не встроена, добавьте её в директорию вашей темы.

Также не следует добавлять скрипты или стили напрямую в header.php. Вместо этого используйте функцию, подключенную к действию wp_enqueue_scripts в файле functions.php.

Список библиотек, встроенных в WordPress и автоматически зарегистрированных, вместе с их идентификаторами (handles) можно посмотреть по ссылке:

http://codex.wordpress.org/Function_Reference/wp_enqueue_script#Default_Scripts_Included_and_Registered_by_WordPress

РЕДАКТИРОВАНО: Я настоятельно рекомендую эту статью для понимания правильного способа добавления скриптов в темы.

18 июл. 2013 г. 05:38:36
3

Весь JavaScript, который правильно поставлен в очередь, будет добавлен в ваш заголовок именно в том месте, где вы или дизайнер темы соответственно добавили wp_head().

В идеале, вы также должны поставить в очередь свои пользовательские скрипты таким же образом и сделать их зависимыми от jQuery — тогда WordPress естественным образом загрузит их после.

Если же вы хотите (как я предполагаю, вы делаете сейчас) вручную добавить JS в заголовок, то сделайте это просто после wp_head(), если JS зависит от jQuery.

17 июл. 2013 г. 21:24:12
Комментарии

перенос wop_head в другое место ломает мою тему

Derfder Derfder
17 июл. 2013 г. 22:06:17

Почему использовать хук wp_head? Вся логика зависимостей предполагает, что вы используете wp_enqueue_scripts? Я не вижу никаких преимуществ в использовании wp_head вместо правильного подхода.

JPollock JPollock
18 июл. 2013 г. 05:40:23

@JPollock: Да, хук wp_head действительно существует. Но я никогда не рекомендовал его использовать. Когда вы добавляете скрипты через wp_enqueue_scripts - как вы думаете, где в теме они будут подключены? --> Там, где размещены теговые функции (обратите внимание на скобки после имени функции) wp_head() или wp_footer()... --> Попробуйте использовать wp_enqueue_script(), убрав wp_head() из header.php - и вы поймете, что это не работает.

Johannes Pille Johannes Pille
18 июл. 2013 г. 11:24:41