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.

The Mighty Mo! Design Co.

More posts from themightymo.com

Jetpack Now Has a Free Web Application Firewall (WAF)!

By The Mighty Mo! Design Co. | September 27, 2022

A few things to kick this post off: I utilize Cloudflare‘s free WordPress Web Application Firewall (WAF) wherever possible. I install WordFence on almost all my sites for their best-in-class WordPress-level WAF (usually running it alongside Cloudflare‘s WAF). I’ve found the Jetpack WP plugin has lost relevance over the last few years as they’ve tried…

ERR_TOO_MANY_REDIRECTS error when connecting Cloudflare to WordPress

By The Mighty Mo! Design Co. | September 16, 2022

Today I checked the “proxy” box for a website on Cloudflare, and I got a “ERR_TOO_MANY_REDIRECTS” error when I visited the website. The solution to this issue is simple: Click the “SSL”->”Overview” menu option in Cloudflare. Select the “Full (Strict)” option. Wallah! Done. Is this helpful? UPDATE: I learned that there is also a free…

How to solve Local WP’s “Error in query (1153): Got a packet bigger than ‘max_allowed_packet’ bytes”

By The Mighty Mo! Design Co. | September 7, 2022

I was trying to import a 115MB database via Local WP’s Adminer tool, and I kept getting the following error: After a lot of trial and error, the solution was to: Update the “max_allowed_packet” variable in Local Sites->[site name]->conf->mysql->my.cnf.hbs to max_allowed_packet = 1000M Add/update the “max_allowed_packet” variable in Local Sites->[site name]->conf->php->php.ini.hbs to max_allowed_packet = 1000M…