WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm building a plugin and I want to add bits of javascript in the admin head but only for certain admin pages. I don't mean pages as in a WordPress page that you create yourself but rather existing admin section pages like 'Your Profile', 'Users', etc. Is there a wp function specifically for this task? I've been looking and I can only find the boolean function is_admin and action hooks but not a boolean function that just checks.

share|improve this question
Gentle nudge to remind you an answer has not been accepted. If none the answers provided answer your question sufficiently or you're struggling to understand the information provided please comment to let us know. – t31os Feb 24 '11 at 17:21
up vote 12 down vote accepted

The way to do this is to use the 'admin_enqueue_scripts' hook to en-queue the files you need. This hook will get passed a $hook_suffix that relates to the current page that is loaded:

function my_admin_enqueue($hook_suffix) {
    if($hook_suffix == 'appearance_page_theme-options') {
        wp_enqueue_script('my-theme-settings', get_template_directory_uri() . '/js/theme-settings.js', array('jquery'));
        wp_enqueue_style('my-theme-settings', get_template_directory_uri() . '/styles/theme-settings.css');
        <script type="text/javascript">
        var template_directory = '<?php echo get_template_directory_uri() ?>';
add_action('admin_enqueue_scripts', 'my_admin_enqueue');
share|improve this answer
Thanks for sharing your info. – racl101 Apr 20 '11 at 17:26

There is a global variable in wp-admin called $pagenow which holds name of the current page, ie edit.php, post.php, etc.

You can also check the $_GET request to narrow your location down further, for example:

global $pagenow;
if (( $pagenow == 'post.php' ) && ($_GET['post_type'] == 'page')) {

    // editing a page


if ($pagenow == 'users.php') {

    // user listing page


if ($pagenow == 'profile.php') {

    // editing user profile page

share|improve this answer

The most comprehensive method is get_current_screen added in WordPress 3.1

$screen = get_current_screen();


WP_Screen Object (
    [action] => 
    [base] => post
    [id] => post
    [is_network] => 
    [is_user] => 
    [parent_base] => edit
    [parent_file] => edit.php
    [post_type] => post
    [taxonomy] => 
share|improve this answer
+1 for using built-ins, this helped me – jammypeach Jul 7 '14 at 12:38

To offer an alternative method/approach to the above question.

// When you are viewing the users list or your editing another user's profile
add_action( 'admin_print_scripts-users.php', 'your_enqueue_callback' );

// When you are editing your own profile
add_action( 'admin_print_scripts-profile.php', 'your_enqueue_callback' );

function your_enqueue_callback() {
    wp_enqueue_script( .. YOUR ENQUEUE ARGS .. );

This method targets the specific pages more directly and avoids needing conditional logic inside your callback(because you've already made that distinction in the selected hook).

share|improve this answer
Wish i knew why this answer didn't get more votes, covers the exact use case in the question, and provides the solution in a minimal amount of code. Feedback would be nice.. – t31os Jan 28 '14 at 14:56

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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