27

I'm trying to enqueue a JS script only when someone is adding or editing a custom post type I created called "recipes". Currently the script works ok when I do this:

if (is_admin()){ wp_enqueue_script( 'my-script' ); } 

But this loads it in every admin page, I'm assuming I need to hook it to a function but I hvae no idea what it'd be.

Thanks in advance!

1

3 Answers 3

57

You can do it like this (put in your functions.php) :

function add_admin_scripts( $hook ) { global $post; if ( $hook == 'post-new.php' || $hook == 'post.php' ) { if ( 'recipes' === $post->post_type ) { wp_enqueue_script( 'myscript', get_stylesheet_directory_uri().'/js/myscript.js' ); } } } add_action( 'admin_enqueue_scripts', 'add_admin_scripts', 10, 1 ); 
3
  • Can i also enqueue style using this function?
    – Sisir
    CommentedNov 14, 2011 at 11:16
  • 1
    @Sisir Use the "admin_print_styles-{$page}" hook. $page can hold the complete add_(sub)menu_page() code and be used to then target the page when using @see wp_enqueue_style().
    – kaiser
    CommentedNov 14, 2011 at 18:04
  • A more up to date way of doing this: wordpress.stackexchange.com/a/34897/93169 (also happens to be a little easier thanks to functionality changes in wordpress...)
    – Frits
    CommentedApr 29, 2016 at 6:38
-3

There's a hook for that, and it's dead-simple to use. See this tutorial for an example implementation.

Edit

Justin moved his tutorials from DevPress to his personal site. Here's the updated link for the tutorial.

4
  • The page listed is gone. Here's a mirror/archive on the Wayback machine.
    – Robert K
    CommentedMar 8, 2012 at 21:42
  • Thanks for that. I've updated my answer with a current link.CommentedMar 8, 2012 at 22:04
  • 5
    Why not post the solution here and link the tutorial as the source...CommentedNov 8, 2014 at 16:33
  • Especially considering all links are invalid now.CommentedJul 8, 2021 at 19:39
-4

Rootstheme (which is based on Twitter Bootstrap) has a really elegant way of loading scripts depending on the page/post type as seen in the roots_scripts function which can be seen here on github.

Basically register all your scripts and styles then have conditional statements that wrap your wp_enqueue_script or wp_enqueue_style statements.

    Start asking to get answers

    Find the answer to your question by asking.

    Ask question

    Explore related questions

    See similar questions with these tags.