Cómo agregar un archivo .js solo en una página específica dinámicamente en el Head
Necesito agregar algunos scripts para Google Maps solo en mi página de contacto y no quiero cargarlos en todas las páginas. Tampoco quiero crear un header personalizado, así que me preguntaba si hay alguna manera de cargar el archivo js únicamente en la página de contacto. Actualmente estoy usando este código para añadir javascript al tema:
// Cargar Scripts
function load_scripts(){
wp_deregister_script('jquery'); // Desregistrar jQuery existente
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);
}
Pero como dije, tengo otro archivo llamado googlemap.js. ¿Podrías decirme si puedo agregarlo SOLO en la página de contacto desde este código? Otro punto es que WordPress está agregando este código al final del body (antes de la etiqueta </body>) ¡lo cual no sé cómo ni por qué ocurre! Pero en mi caso específico necesito agregar el código en el <head>. ¿Podrías indicarme cómo puedo hacer esto?
Gracias

Usa el condicional is_page()
para cargar scripts en páginas específicas.
Aquí está la versión modificada de tu función:
//Cargar Scripts
function load_scripts(){
wp_deregister_script('jquery'); // Desregistrar jQuery existente
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' );
// registrar el script
wp_register_script( 'my-script', 'URL al Script' ); // por defecto el script se carga en el head
// cargar condicionalmente en página
if (is_page( 'Contacto' )) {
wp_enqueue_script('my-script');
}
}

¡Gracias Sisir! Solo tengo algunas preguntas aquí. ¿Por qué agregaste el wp_enqueue_script('');
al código y cómo es que el código se está agregando al cuerpo y no a la cabeza? ¿Cómo puedo forzar a que mi-script se agregue a la cabeza?

por defecto los scripts se cargan en el <head>
no en el pie de página. Puedes controlar esto cuando registras un script, mira wp_register_script()
busca el argumento $in_footer

asegúrate de borrar la caché del navegador. ¿Tienes alguna URL donde pueda verlo en acción?

sí www.teddybearfamilychildcare.com

continuemos esta discusión en el chat

Aquí tienes algunos trucos para ti
Nota:
wp_register_script(); // solo registra el archivo js, no lo ejecuta
wp_deregiser_script(); // elimina completamente el archivo js, no es el mejor método, es mejor usar comprobaciones condicionales de página
//Ejecutar Js
wp_enqueue_script(); // usa solo tu archivo js registrado,
wp_dequeue_script(); // esta función evita que se ejecute el archivo js, es un buen método para usar en comprobaciones condicionales de página
En tu archivo functions.php
function js_library() {
//1. Método
if ( is_front_page() ) {
//wp_dequeue_script();
}
//2. Método
if ( is_page(120)) { //120 es el id de página, puedes obtener el id de página usando $post->ID o get_the_ID
//wp_dequeue_script();
}
if ( is_page($post->ID) == 120 ) { //120 es tu id de página
//wp_dequeue_script();
}
if ( is_page('about-us') ) { //about-us usa el slug de página, puedes obtener el slug de página en http://tudominio.com/about-us
//wp_dequeue_script();
}
$remove_js_pages = array('about-us', 'contact-us', 'service'); // para múltiples slugs de página
if ( is_page($remove_js_pages) ) { //recuerda que puedes obtener el slug de página desde la URL de tu página ;-)
//wp_dequeue_script();
}
//Usando el nombre de página
$pagename = get_query_var('pagename');
if ( !$pagename && $id > 0 ) {
// Si una página estática está configurada como página de inicio, $pagename no estará definido. Recupéralo del objeto consultado
$post = $wp_query->get_queried_object();
$pagename = $post->post_name;
}
if ( is_page() == $pagename ) {
//wp_dequeue_script();
}
}
