I know I can add a script file to the footer of wordpress that requires jquery using this code:
<?php
function my_scripts_method() {
// register your script location, dependencies and version
wp_register_script('custom_script',
get_template_directory_uri() . '/js/custom_script.js',
array('jquery'),
'1.0',
true);
// enqueue the script
wp_enqueue_script('custom_script');
}
add_action('wp_enqueue_scripts', 'my_scripts_method');
?>
But what if I want to add just a normal snippet of jquery inline, not a file. How can this be done.
Edit
I know I can use this script to add something to the footer:
<?php
function myscript() {
?>
<script type="text/javascript">
// This depends on jquery
</script>
<?php
}
add_action('wp_footer', 'myscript');
But how do I specify the script that is used requires jquery to run.
The easiest way to do this is actually a combination of
wp_enqueue_script
and the footer actions that Saif and v0idless already referenced. I frequently use jQuery in my themes and plugins, but I put all of the other scripts in the footer as well.The best way to actually queue things up would be this:
But this code snipped assumes that you’re the one queueing the script, i.e. you’re doing this in your own plugin or theme.
At the moment, there is no way to add an in-line script to the WordPress footer and also load it with dependencies. But there is an alternative, if you’re willing.
The alternative
When WordPress works with scripts, it loads them internally to an object to keep track of them. There are essentially 3 lists inside the object:
When you first register a script with
wp_register_scripts()
it’s placed in the registered list. When youwp_enqueue_script()
the script, it’s copied to the queue list. After it’s been printed to the page, it’s added to the done list.So, rather than queueing your footer script to require jQuery, you can document that it needs to use jQuery and just check programatically to make sure jQuery is loaded.
This uses
wp_script_is()
to check where the script is listed.You might be able to use this same code to force jQuery to load in the footer as well, but I haven’t tested that … so your mileage my vary.
Since wordpress 4.5 you can add inline script by
wp_add_inline_script()
. To add a javascript snippet to the footer that requires jQuery, this code helps youwp_add_inline_script with wordpress jquery
Use the
wp_footer
action like this:I know OP wants to specify a requirement on jQuery, and WordPress’ authors should have allowed snippets to be enqueued adjacent to script files, but they didn’t, so I recommend not trying to force it. If you don’t want to mess with the queue or its order at all, like me (because I’m using other plugins that combine and optimise scripts), then the answer really is to use the
wp_footer
action like so:You can use the
wp_footer
action for doing this. Check the codex for wp_footer.