I added the following code to my functions.php
:
if(!function_exists('bi_frontend_scripts')) {
function bi_frontend_scripts() {
wp_enqueue_script('jquery');
// I originally wanted to do:
wp_enqueue_script('jQuery.bxSlider', get_bloginfo('template_url').'/scripts/jquery.bxslider/jquery.bxslider.min.js', array('jquery'));
}
}
add_action('wp_enqueue_scripts', 'bi_frontend_scripts');
But apparently neither of the scripts is being enqueued. I didn’t get what my problem was, so I added this script to find out if the hook is called:
function aal_handler() {
static $list = array();
// exclude certain actions:
$exclude = array('gettext', 'gettext_with_context');
$action = current_filter();
if(!in_array($action, $exclude)) {
$list[] = $action;
}
// shutdown is the last action
if ('shutdown' == $action) {
print '<pre>' . implode( "n", $list ) . '</pre>';
}
}
add_action('all', 'aal_handler', 99999, 99);
And in the list wp_enqueue_scripts
does not appear. So why the hook is not called?!
Your code is correct, though I would not add the callback if the function name has already been used. If someone else has used the name you don’t know what you might be adding.
I also tested your “hook dump” function–
aal_handler()
— and that works.wp_enqueue_scripts
is part of the output.I have to conclude that there is something wrong with the theme.
wp_enqueue_scripts
is hooked towp_head
, which fires in thewp_head()
function. The most obvious possibility is that your theme is not usingwp_head()
correctly, or at all. Another distant possibility is that something has removed your callback– for example, with:For anyone getting this problem in an admin page, use the
admin_enqueue_scripts
hook instead of thewp_enqueue_scripts
hook.Documentation here.
I am here again with a lot of information for you so that you understand how things work with
wp_enqueue_scripts
.You need to know the priority order for the
wp_enqueue_scripts
. See hook order below:…and so on.
So you see you can add it in the
init
hook and doing so it will be called as high priority than below the listing.If your files are not loading you could use a higher priority hook.
If your
wp_enqueue_script
is not being called, you can use this simple trick to get it working for your theme or plugin.