I took a long time figure out the right way for this! Here’s what I follow now:
Use case: In a plugin’s admin page
Hook: admin_print_scripts-<page hook> OR <the php file name for your plugin>
$hook = add_menu_page(...) / add_submenu_page(...);
add_action('admin_print_scripts-'.$hook, 'my_callback');
Use case: On all admin pages
Hook: admin_print_scripts
add_action('admin_print_scripts', 'my_callback');
Use case: On all front end pages
Hook: wp_enqueue_scripts
add_action('wp_enqueue_scripts', 'my_callback');
And the callback:
function my_callback(){
wp_enqueue_script(....);
}
Note: Use the same for enqueueing styles too (wp_enqueue_style)!
Edit: I checked the codex for admin_print_scripts
, they now suggest to use admin_enqueue_scripts
instead. I ran a search through version 3.4.1 core files, and found they use admin_print_scripts-<hook>
internally! So you can use it too!
It works flawlessly!