Difference between do_action(‘admin_enqueue_scripts’, $hook_suffix) and do_action(“admin_print_styles-$hook_suffix”) syntax

Source ref:

do_action('admin_enqueue_scripts', $hook_suffix);
do_action("admin_print_styles-$hook_suffix");

Laying aside the obvious difference in base action ( admin_enqueue_scripts vs admin_print_scripts ), what is the syntactical difference between these two?

I know that for the second, the corresponding add_action() call is like so:

function wpse99999_enqueue_admin_scripts( 'appearance_page_pagename' ) {
    // wp_enqueue_script() call here
}
add_action( 'admin_print_styles-appearance_page_pagename', wpse99999_enqueue_admin_scripts );

But how would the first look? How is the $hook_suffix passed here? Perhaps it is passed as a parameter to the callback?

function wpse99999_enqueue_admin_scripts( 'appearance_page_pagename' ) {
    // wp_enqueue_script() call here
}
add_action( 'admin_enqueue_scripts', 'wpse99999_enqueue_admin_scripts' );

Or is it returned by the callback?

function wpse99999_enqueue_admin_scripts() {
    // wp_enqueue_script() call here
    return 'appearance_page_pagename';
}
add_action( 'admin_enqueue_scripts', 'wpse99999_enqueue_admin_scripts' );

Or is it something else entirely?

1
1

For …

do_action('admin_enqueue_scripts', $hook_suffix);

… the callback gets the hook suffix as first parameter. Since it is an action you don’t have to return anything. You can use it in a rather flexible callback function:

add_action('admin_enqueue_scripts', 'wpse_49993_admin_script_callback' );

function wpse_49993_admin_script_callback( $hook_suffix )
{
    switch ( $hook_suffix )
    {
        case 'index.php': // dashboard
        // do one thing
        break;
        case 'options-general.php': // settings
        // do another thing
        break;
    }
}
  • Plus: You can re-use one function on different sites.
  • Minus: The callback will be called on every admin page.

do_action("admin_print_styles-$hook_suffix");

This will be called just on one page.

  • Plus: Slightly faster, smaller risk of collisions.
  • Minus: You need either more add_action() calls or more callback functions to do similar things.

Leave a Comment