Как динамически добавить файл .js только на одну конкретную страницу в раздел Head
Мне нужно добавить несколько скриптов для Google Maps только на страницу контактов, и я не хочу загружать их на всех страницах. Я также не хочу создавать кастомный заголовок, поэтому интересно, есть ли способ добавить js-файл только на страницу контактов? В данный момент я использую этот код для добавления JavaScript в тему:
//Загрузка скриптов
function load_scripts(){
wp_deregister_script('jquery'); // Отменяем регистрацию существующего jQuery
wp_enqueue_script('jquery', 'http://code.jquery.com/jquery.js', '', '', true);
wp_enqueue_script('bootstrap-jquery', get_template_directory_uri().'/assets/js/bootstrap.js', '', '', true);
}
Но, как я уже сказал, у меня есть еще один файл под названием googlemap.js. Можете ли вы подсказать, как я могу добавить его ТОЛЬКО на страницу контактов с помощью этого кода? Другой момент - WordPress добавляет этот код в конец body (перед закрывающим тегом), что я не понимаю как и почему! Но в моем случае мне нужно добавить код в раздел <head>! Подскажите, как это можно сделать.
Спасибо

Используйте условную функцию is_page()
для загрузки скриптов на определенной странице.
Вот модифицированная версия вашей функции:
//Загрузка скриптов
function load_scripts(){
wp_deregister_script('jquery'); // Отменить регистрацию существующего jQuery
wp_register_script('jquery', 'http://code.jquery.com/jquery.js', '', '', true);
wp_enqueue_script( 'jquery' );
wp_register_script('bootstrap-jquery',get_template_directory_uri().'/assets/js/bootstrap.js', array( 'jquery' ), '', true);
wp_enqueue_script( 'bootstrap-jquery' );
// зарегистрировать скрипт
wp_register_script( 'my-script', 'URL к скрипту' ); // по умолчанию скрипт загрузится в head
// условная загрузка для страницы
if (is_page( 'Contact' )) {
wp_enqueue_script('my-script');
}
}

Спасибо, Сисир, у меня есть несколько вопросов! Почему ты добавил wp_enqueue_script(''); в код и почему код добавляется в body, а не в head? Как я могу заставить добавить my-script в head?

по умолчанию скрипты загружаются в <head>
, а не в футер. Ты можешь управлять этим при регистрации скрипта, смотри wp_register_script()
ищи аргумент $in_footer

Убедитесь, что вы очистили кеш браузера. Есть ли у вас URL, где я могу увидеть это в действии?

Да www.teddybearfamilychildcare.com

давайте продолжим обсуждение в чате

Вот несколько полезных трюков для вас
Примечание:
wp_register_script(); // только регистрирует JS файл, но не запускает его
wp_deregiser_script(); // полностью удаляет JS файл, это не лучший метод, лучше использовать проверку условий страницы
//Запуск JS
wp_enqueue_script(); // использует только зарегистрированный JS файл
wp_dequeue_script(); // эта функция предотвращает запуск JS файла, это хороший метод для проверки условий страницы
В вашем файле functions.php
function js_library() {
//1. Метод
if ( is_front_page() ) {
//wp_dequeue_script();
}
//2. Метод
if ( is_page(120)) { //120 - это ID страницы, вы можете получить ID страницы используя $post->ID или get_the_ID
//wp_dequeue_script();
}
if ( is_page($post->ID) == 120 ) { //120 - это ID вашей страницы
//wp_dequeue_script();
}
if ( is_page('about-us') ) { //about-us - это ярлык страницы (slug), вы можете получить его из URL: http://yourdomain.com/about-us
//wp_dequeue_script();
}
$remove_js_pages = array('about-us', 'contact-us', 'service'); // для нескольких ярлыков страниц
if ( is_page($remove_js_pages) ) { //помните, вы можете получить ярлык страницы из URL вашей страницы ;-)
//wp_dequeue_script();
}
//Использование имени страницы
$pagename = get_query_var('pagename');
if ( !$pagename && $id > 0 ) {
// Если статическая страница установлена как главная, $pagename не будет установлен. Получите его из запрашиваемого объекта
$post = $wp_query->get_queried_object();
$pagename = $post->post_name;
}
if ( is_page() == $pagename ) {
//wp_dequeue_script();
}
}
