Сценарий постановки в очередь в functions.php против на странице
Имеет ли значение, если я ставлю в очередь скрипт только на той странице, на которой он мне нужен для использования? В отличие от functions.php
?
Или, какова наилучшая практика? В этом примере мне нужен ротатор только на первой странице моего сайта.
И если я поставлю его в очередь на странице, есть ли лучшее место для его размещения?
2 answers
Продолжайте functions.php .
Используйте действие wp_enqueue_scripts для вызова этой функции или admin_enqueue_scripts для вызова ее на стороне администратора. Вызов его вне действия может привести к проблемам. Подробности см. в № 11526.
Источник: http://codex.wordpress.org/Function_Reference/wp_enqueue_script
function themename_load_js() {
if ( is_admin() ) {
return;
}
if is_page( 123) { // Replace 123 with your page's ID.
wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'rotator-js', get_template_directory_uri() . '/js/rotator.js', array ( 'jquery' ) );
wp_enqueue_script( 'rotator-init-js', get_template_directory_uri() . '/js/rotator-init.js', array ( 'jquery', 'rotator-js' ) );
}
}
add_action( 'wp_print_scripts', 'themename_load_js' );
Редактировать: Бонусный совет: Всякий раз, когда мне нужно сделать что-то подобное, вместо жесткого кодирования идентификатора страницы в функции, я создаю параметры страницу и добавьте вызов wp_dropdown_pages(), который позволяет пользователю выбрать специальную страницу. Вы сказали, что используете первую страницу, поэтому, вероятно, вы могли бы использовать is_front_page() в своей функции, а не проверять идентификатор страницы, что еще чище.
Это абсолютно работает для меня прямо сейчас:
add_action('get_header', function() {
if(is_page('566')) {
function sp_enqueue_script() {
wp_enqueue_script(
'sp-custom-script',
get_stylesheet_directory_uri() . '/assets/js/sp_script.js',
array( 'jquery' ), '1.0', true
);
}
add_action( 'wp_enqueue_scripts', 'sp_enqueue_script' );
}
});
Is_страничный не работает в functions.php поскольку основной запрос еще не загружен, подождите, пока загрузится заголовок.
Последнее логическое значение в крючке wp_enqueue_script
означает, что сценарий должен быть помещен в очередь в нижнем колонтитуле, чтобы он работал быстрее.