This is something that has always confused me and I could use some help.
I want to do four things directly above the closing body tag:
- include jQuery (WordPress version is fine)
- include a jQuery plugin dependent on jQuery beneath this
- initialize the plugin directly underneath this plugin AND avoid conflict issues using $ instead of jQuery
- do this only on specific page templates or theme files
I understand that I probably should be using wp_enqueue_script, but I’m not sure if I should use that in functions.php or just directly on the page where I want it.
Regarding number 3 I have seen the workarounds such as:
jQuery(function ($) {
/* You can safely use $ in this code block to reference jQuery */
});
But I’m honestly confused as to how to implement this.
What’s the best way to accomplish this?
Thanks very much.
The following (in your theme’s functions.php
) will register your script, and set jQuery as a dependency. So when you enqueue it, jQuery will also be enqueued.
function my_scripts_method() {
// register your script location, dependencies and version
wp_register_script('my_custom_script',
get_template_directory_uri() . '/js/custom_script.js',
array('jquery'),
'1.0' );
}
add_action('wp_enqueue_scripts', 'my_scripts_method');
You can then enqueue your script one of two ways. In your theme’s functions.php
you can use the template_include
filter the get the template being used using is_page_template()
add_filter( 'template_include', 'my_load_script_for_template', 1000 );
function my_load_script_for_template( $template ){
if(is_page_template('my-template.php'))
wp_enqueue_script('my_custom_script');
return $template;
}
Alternatively, if you are using 3.3+ and your theme calls wp_footer()
then you can just call wp_enqueue_script('my_custom_script')
inside the actual template page.