How to Add Plugin Scripts and CSS to a Specific Custom Post Type

I am working on a new calendar plugin for WordPress and discovered that my jQuery scripts and CSS were loading on every page in the admin. Whoops!

The solution was to include my scripts in the following manner:

// Only load the scripts and css on the a specific custom post type in the admin
add_action('admin_init','load_my_script');
function load_my_script() {
  global $pagenow, $typenow;
  if (empty($typenow) && !empty($_GET['post'])) {
    $post = get_post($_GET['post']);
    $typenow = $post->post_type;
  }
  if (is_admin() && $typenow=='add_your_custum_post_type_name_here') {
    if ($pagenow=='post-new.php' OR $pagenow=='post.php') { 
      require ( dirname(__FILE__) .'/add_your_scripts_loader_file_here.php' );
    }
  }
}

I have discovered over the years that many plugins fail to include their scripts in this manner, which can cause all sorts of weird things to happen in the admin.

Enjoy!

Thanks to Mike for the answer.

Toby Cryns

Toby Cryns is a freelance CTO, expert WordPress developer, and teacher.

He offers free advice to improve your freelance biz.

He also publishes small droppings every now and them to https://twitter.com/tobycryns and https://twitter.com/themightymo.com

Follow Toby's contributions on Github and WP.org.