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

Before I get started, I want to acknowledge that there are some really good articles that are targeted at how to conditionally enqueue scripts based on page/post content.

These are great, but they're much more advanced than what I want to do.

I feel like the answer is using the built-in is_page() function (codex), but when I try to use it the site breaks, or just doesn't work.

I think I'm just executing the conditional logic in the wrong spot.

Here's what I've tried to add to my functions.php:

function register_more_stylesheets() {
    wp_register_style( 'stylesheet_name', get_stylesheet_directory_uri() . '/stylesheet.css' );
function add_my_stylesheet() {
    if ( is_page('products-services') ) // using page slug
    wp_enqueue_style( 'stylesheet_name' );  // no brackets needed for one line and no else
add_action( 'init', 'register_more_stylesheets' ); // should I use wp_print_styles hook instead?
add_action( 'wp_enqueue_scripts', 'add_my_stylesheet' );

When I remove the conditional part of it, the stylesheet is successfully enqueued so I know that works.

share|improve this question
It worked prefect. Thank you. – Ali Hesari Jan 26 at 7:34
up vote 1 down vote accepted

I copy pasted your code into my dev environment, changed nothing but the page name, and it works just fine. Are you sure that it's not being enqueued and you just have it pointed wrong or that the page is not named incorrectly or something?

share|improve this answer
Thanks, it does work! I don't know why it wasn't working before. Stranger things have happened I guess. Hopefully this will be of use to someone else. – Evan Mattson Jan 17 '12 at 0:19

What you've got is right--you're just hooking it to the wrong action. Try the "wp" action instead of "init". When init runs, the is_page() won't work properly yet.

EDIT: I'm wrong. I thought you had add_my_stylesheet hooked to init, but you don't. is_page should work from the enqueue_scripts action. Sorry...carry on...

share|improve this answer

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.