For a WP Theme with multiple admin screen (got its own main menu and some submenus), I want to add a common Js script to load on (only) all these pages.

I know how to acheive this using the pagehooks of the individual (sub)pages lioke this:

add_action('admin_print_scripts-' . $page, 'my_plugin_admin_script');

but this way I need to reåeat this for each admin page (for each submenu pagehook)

Is there a way smarter way to add the scripts, testing for the PARENT menu? so that I just need to add it with one line of admin_print_scripts-* code?

1 Answer 1


It would be easiest to run some conditional logic on $parent_file inside a callback hooked onto admin_print_scripts, and would go a little something like this..

add_action( 'admin_print_scripts', 'possibly_enqueue_script' );
function possibly_enqueue_script() {
    global $parent_file;
    if( 'my-slug' == $parent_file )
        wp_enqueue_script(  ... your enqueue args .. );

You'll need to replace my-slug with the handle of your parent page, it's the fourth parameter in add_menu_page...

The script will then enqueue for both the parent page and any of it's children pages..

Hope that helps...

  • 1
    That's the same thing I did for one of my own plugins, well it's similar. Dec 20, 2010 at 14:27
  • It should be reliable to, as far as i can tell it's set for every page you see in the admin area. The alternative would be some sort of loop that registers the plugin pages, and adds appropriate actions for each iteration(but it wouldn't be as elegant as the above imho).
    – t31os
    Dec 20, 2010 at 15:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.