When registering a page for the admin area, using add_submenu_page
or any of the other add_{TYPE}_page
functions the fourth parameter accepts a unique identifier, this identifier designates the hook your registered page will use..
If i were to register an options for example:
add_options_page( 'Example Plugin Options', 'Example Plugin', 'manage_options', 'example-plugin-identifier', 'example_plugin_options' );
Various hooks are then available for that page specifically, here are just a few possible actions for the now registered page.
// load-{HANDLE}
add_action( 'load-example-plugin-identifier', 'example_plugin_callback' );
// admin_head-{HANDLE}
add_action( 'admin_head-example-plugin-identifier', 'example_plugin_callback' );
// admin_print_scripts-{HANDLE}
add_action( 'admin_print_scripts-example-plugin-identifier', 'example_plugin_callback' );
// admin_print_styles-{HANDLE}
add_action( 'admin_print_styles-example-plugin-identifier', 'example_plugin_callback' );
function example_plugin_callback() {
// Run your code here
}
There is also the admin_enqueue_scripts
hook, which provides the name of the current handle in the string/variable it passes along to callback functions.
add_action( 'admin_enqueue_scripts', 'example_plugin_callback' );
function example_plugin_callback( $handle ) {
// If the handle is not the page registered earlier, return
if( 'example-plugin-identifier' =! $handle )
return;
// Run your code here
}
You should not typically need to use admin_head
,admin_print_scripts
or admin_print_styles
unless you have a specific requirement to target every administration page or perform conditional logic inside the callback to target specific registered pages.
Hope that helps..