30 Responses

  1. Ptah Dunbar
    Ptah Dunbar July 27, 2009 at 11:52 pm |

    Ah, neat little trick. That’s something I’ve had to explain to several users when they were interested in trying to add a custom stylesheet for page templates etc. (even though a simple .page-template-archives rule would suffice).

    Reply
  2. Jeremy
    Jeremy July 28, 2009 at 2:37 am |

    Useful, simple to implement and well explained: another great tip of yours, thank you!

    Reply
  3. Peter Kahoun
    Peter Kahoun July 28, 2009 at 3:40 am |

    Could you provide an example when replacing whole stylesheet is more “better” than adding some overriding rules?

    Reply
  4. Adam W. Warner
    Adam W. Warner July 28, 2009 at 7:35 am |

    Can someone explain what the 10 and 2 are doing in this line?:

    add_filter( 'stylesheet_uri', 'my_stylesheet', 10, 2 );
    Reply
  5. Ptah Dunbar
    Ptah Dunbar July 28, 2009 at 7:45 am |

    @Adam – 10 is the priority that my_stylesheet will run. So that means it has to wait until everything less than 10 is run before this function gets executed. 2 is the number of arguments my_stylesheet accepts ($stylesheet_uri and $stylesheet_dir_uri).

    Reply
  6. Adam W. Warner
    Adam W. Warner July 28, 2009 at 7:51 am |

    Thanks Ptah, now I fully understand what’s happening in the above code:)

    Reply
  7. links for 2009-07-28 | Links | WereWP
  8. fb
    fb July 28, 2009 at 4:37 pm |

    I would also agree with the comment here http://justintadlock.com/archives/2009/07/27/contextually-changing-your-themes-stylesheet#comment-143544

    As you have all of your themes so well coded, why do we need to have additional css files?

    We can just add over riding css rules.. as most of us cache the css files locally (on clients sites) why make them d/l a new one..

    Maybe I’m just barking up the wrong tree, Justin please enlighten me ( as you have thankfully done many times before)

    atb

    Reply
  9. WordPress Watch » Blog Archive » How to use multiple stylesheets in one WordPress theme
  10. fb
    fb July 29, 2009 at 5:01 am |

    Ok sure still seems a bit extreme, but understand that it could come in handy

    Thanks

    Reply
  11. Peter Kahoun
    Peter Kahoun July 29, 2009 at 1:22 pm |

    @Justin Got it now, thanks. Actually, you could go even more into extreme and load even entirely different theme… So the particular Page would look like a separated website. (Just thinking aloud…)

    Reply
  12. fb
    fb July 31, 2009 at 7:01 am |

    Re: http://justintadlock.com/archives/2009/07/27/contextually-changing-your-themes-stylesheet#comment-143907

    loading a completely different theme, per page or post, this was (not sure if it still works) with all-in-one seo, you had the possibility of choosing what theme you wanted to use on a per-page/post basis, just my two cents…

    Reply
  13. Robert Joe
    Robert Joe July 31, 2009 at 8:46 am |

    Indeed a great tip this, I really love you for this.

    Reply
  14. WordPress Weekend Resources - July 31, 2009 | Theme Lab
  15. Wordpress Blog Services - WordPress Weekend Resources - July 31, 2009
  16. Chris
    Chris August 8, 2009 at 3:19 pm |

    For a real-world example, would this be a practical alternative to creating a separate home.php file, if I would like to remove the sidebar from my static front page?

    Reply
  17. Wordpress Wednesday: 50 Links & Resources from around the web | Wordpress Guerrilla
  18. Modern Warfare 2
    Modern Warfare 2 August 22, 2009 at 12:09 am |

    Thanks Chris !! I was all messed up trying to use CSS :(

    Reply
  19. rexsky
    rexsky August 25, 2009 at 8:14 pm |

    hey Justin,great job.I just learn div and css last month..thanks for your sharing…learned a lot from your blog….again thanks…
    :)

    Reply
  20. Dan Smart
    Dan Smart September 2, 2009 at 12:50 am |

    Thanks for the post. I’ve been looking for a solution like this, however I’m still trying to create a solution that doesn’t require you to have a list of pages in the function – it would be nice to be able to grab this from the custom page or something similar so that it’s totally extensible rather than dependent on you adding to the list of pages with is_page().

    Any thoughts?

    Reply
  21. Sam Lehti
    Sam Lehti November 11, 2009 at 1:32 pm |

    This really is handy looking example. Never knew it was possible with WP itself. Have been using thesis to get things done but somedays want to use another theme and if it works with every theme I could use it instead of hacking every css file by hand.

    Reply
  22. andri
    andri December 17, 2009 at 10:04 am |

    I need more tips about hybrid theme… thanks for this tips :)

    Reply
  23. Scott Pelland
    Scott Pelland December 23, 2009 at 7:15 pm |

    Thanks, Justin. I’ve been looking for a solution just like this for some time. I also was wondering if you had given any thought to Dan’s question above?

    Reply
  24. VB .Net Tutorial
    VB .Net Tutorial June 22, 2010 at 2:26 am |

    Thanks the idea of switching the styles as per the contxt is nice. Have you ever experienced issues with cache when switching themes.

    How about bypassing the cache. I always had problems if the different stylesheet is already in cache, then the theme wont be switched properly. I guess i need some sort of different names to store into cache.

    Reply
  25. Will
    Will December 3, 2010 at 12:23 pm |

    Hi
    How about trouble with caching? will it cause trouble. One of my asp.net themes always have trouble with caching. Any resolutions?

    Reply
  26. Thomas Gam Nielsen
    Thomas Gam Nielsen July 22, 2011 at 5:58 am |

    Hi guys

    Is it possible to load a specific style file for a page and all the children pages related to that page?

    if ( is_page( 'about' ) ) (AND THEN SOMETHING WITH ALL CHILDREN PAGES)
    		$stylesheet_uri = $stylesheet_dir_uri . '/style-about.css'; 

    Just wondering…

    // Thomas

    Reply
  27. Chris
    Chris September 9, 2011 at 6:25 pm |

    I am hitting a wall trying to do this (in 3.2.1). I get the following notice:Undefined variable: stylesheet_uri and neither of the two stylesheets is loading – instead when I look at the source code I see the default style.css? I also don’t understand the following:
    $stylesheet_uri, $stylesheet_dir_uri -
    do I need to define each as:
    $stylesheet_uri = stylesheet_uri();
    $stylesheet_dir_uri = stylesheet_dir_uri();
    Please help – this is actually the best solution for me since I want to change the layout depending on the page… thanks!

    Reply
  28. Chris
    Chris September 9, 2011 at 6:43 pm |

    Hi again, after reading Thomas’ post, I wonder if I need to be using the hybrid theme – I am developing my own

    Reply

Leave a Reply

By submitting a comment here you grant this site a perpetual license to reproduce your words and name/Web site in attribution.

Please use your real name or a pseudonym (i.e., pen name, alias, nom de plume) when commenting. If you add your site name, company name, or something completely random, I'll likely change it to whatever I want.