Thanks Mike and Otto. I will investigate this route further (though I am sure my user base will have something to say!).<br><br><div class="gmail_quote">On Thu, Dec 2, 2010 at 11:01 PM,  <span dir="ltr">&lt;<a href="mailto:michael@mfields.org">michael@mfields.org</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">Sayontan,<br>
<br>
I agree with Otto here and I use method #1 in my plugins when I need to<br>
generate dynamic css. If the overhead of processing php on each request is<br>
an issue for you, might it be a good idea to store the dynamic css in an<br>
autoloaded option and print the value of the option to the head?<br>
<br>
-Mike<br>
<div><div></div><div class="h5"><br>
&gt; Otto,<br>
&gt; Method 1 is not better than Method 2 if a lot of your CSS is dynamic, as<br>
&gt; is<br>
&gt; the case with most themes that offer a lot of styling options. In such a<br>
&gt; case using Method 1 you would be repeatedly running a lot of PHP calls to<br>
&gt; dump the same CSS each time into your HTML. This is really inefficient<br>
&gt; particularly in contrast to one extra HTTP request to get a pre-generated<br>
&gt; file. Hence it is not something that can be shoved aside by saying &quot;get<br>
&gt; over<br>
&gt; it&quot; - Method 2 does improve caching performance significantly on several<br>
&gt; occasions.<br>
&gt;<br>
&gt; Sayontan.<br>
&gt;<br>
&gt; On Thu, Dec 2, 2010 at 10:13 AM, Otto &lt;<a href="mailto:otto@ottodestruct.com">otto@ottodestruct.com</a>&gt; wrote:<br>
&gt;<br>
&gt;&gt; Ugh. Okay, this may be a bit long winded.<br>
&gt;&gt;<br>
&gt;&gt; For the cases where you&#39;re creating dynamic CSS, then there is one<br>
&gt;&gt; correct way to do it, and several incorrect ways to do it. Let&#39;s go<br>
&gt;&gt; over the possibilities.<br>
&gt;&gt;<br>
&gt;&gt; Method 1: Insert the dynamic CSS directly into the HTML using the<br>
&gt;&gt; wp_head<br>
&gt;&gt; call.<br>
&gt;&gt;<br>
&gt;&gt; Method 2: Write dynamic CSS to a file, link to the file in the head.<br>
&gt;&gt;<br>
&gt;&gt; Method 3: Hook into the template-loader or init to create CSS output<br>
&gt;&gt; based<br>
&gt;&gt; on<br>
&gt;&gt; a special GET variable you define.<br>
&gt;&gt;<br>
&gt;&gt; Method 4: Style.php, which is linked to from the head, and outputs<br>
&gt;&gt; dynamic css. Usually this has to include wp-load.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; I listed those in that order because they go from &quot;best&quot; to &quot;worst&quot;.<br>
&gt;&gt; I&#39;ll explain why now. :)<br>
&gt;&gt;<br>
&gt;&gt; Method 1 has the lowest server impact. When you make the call to get<br>
&gt;&gt; the page, it creates the page and outputs all the dynamic stuff in one<br>
&gt;&gt; shot. Some people find the CSS in the html to be aesthetically<br>
&gt;&gt; displeasing, but the fact of the matter is that this is the fastest,<br>
&gt;&gt; simplest, and best way to do it.<br>
&gt;&gt;<br>
&gt;&gt; Method 2 has a problem in that you&#39;re doing file writing from the<br>
&gt;&gt; theme. This is bad because you cannot guarantee that you have<br>
&gt;&gt; permissions to even write files. Assuming you try to write them to the<br>
&gt;&gt; uploads folder, then part of your theme is now outside the theme<br>
&gt;&gt; directory, which is confusing. Also, by including the CSS as a<br>
&gt;&gt; separate file, you&#39;re creating another call to the server, which even<br>
&gt;&gt; Google Webmaster Tools will tell you is a thing to avoid.<br>
&gt;&gt;<br>
&gt;&gt; Method 3 is the same as method 2, except now instead of writing the<br>
&gt;&gt; file, you make a call to <a href="http://example.com/?css=whatever" target="_blank">http://example.com/?css=whatever</a> and then<br>
&gt;&gt; your code intercepts that and produces the CSS on-the-fly, via<br>
&gt;&gt; whatever means, then exits. This avoids the file writing problem, but<br>
&gt;&gt; now it&#39;s not<br>
&gt;&gt; only making an extra server call, but it&#39;s also loading all of<br>
&gt;&gt; WordPress up again, which creates a higher server CPU impact.<br>
&gt;&gt;<br>
&gt;&gt; Method 4 is the same as method 3, basically, except that you&#39;re<br>
&gt;&gt; referencing some PHP file directly, which now has to a) find wp-load,<br>
&gt;&gt; b) load WordPress, and c) produce the resulting CSS output. Worst of<br>
&gt;&gt; all cases: two calls to the server, WordPress loads twice, and you&#39;re<br>
&gt;&gt; now having to search around to figure out how to load WordPress again<br>
&gt;&gt; just so you can access the database.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; So the end statement here is to always use method 1. Okay, so you find<br>
&gt;&gt; CSS in the HTML header code to be unpleasant. My advice: get over it.<br>
&gt;&gt; Every other way of doing things not only requires an extra HTTP<br>
&gt;&gt; request to the server, but most of them also require a whole lot of<br>
&gt;&gt; extra PHP processing. Think about it this way: You&#39;ve already got<br>
&gt;&gt; WordPress loaded up to generate the page. The most sensible thing to<br>
&gt;&gt; do is to go ahead and generate the dynamic part of the CSS right now<br>
&gt;&gt; as well. Just make that dynamic part as small as possible. Minify it<br>
&gt;&gt; into one-line if you want.<br>
&gt;&gt;<br>
&gt;&gt; Note that WordPress itself uses method 1 for the custom background<br>
&gt;&gt; image and custom header image stuff. It does it this way because it&#39;s<br>
&gt;&gt; the best way to do it.<br>
&gt;&gt;<br>
&gt;&gt; -Otto<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Thu, Dec 2, 2010 at 11:57 AM, Simon Prosser &lt;<a href="mailto:pross@pross.org.uk">pross@pross.org.uk</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt; &gt; There is a more sensible way to do this. Use a style.php file that<br>
&gt;&gt; &gt; prints your custom css<br>
&gt;&gt; &gt; with text/css header and a far future expires, then the browser will<br>
&gt;&gt; &gt; cache it locally.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; My theme [JustCSS] uses this to cache the css.<br>
&gt;&gt; &gt; <a href="https://github.com/Pross/JustCSS" target="_blank">https://github.com/Pross/JustCSS</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; On 2 December 2010 17:46, Sayontan Sinha &lt;<a href="mailto:sayontan@gmail.com">sayontan@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt; What about instances of caching? E.g. I have a lot of look and feel<br>
&gt;&gt; options<br>
&gt;&gt; &gt;&gt; that can be set by the user. However if you attempt to print them out<br>
&gt;&gt; as<br>
&gt;&gt; &gt;&gt; dynamic CSS on the fly it creates extra server load, not to mention<br>
&gt;&gt; an<br>
&gt;&gt; ugly<br>
&gt;&gt; &gt;&gt; lot of CSS before the content in the page&#39;s source. Instead the CSS<br>
&gt;&gt; is<br>
&gt;&gt; saved<br>
&gt;&gt; &gt;&gt; as a local file at the time of saving the options and then that file<br>
&gt;&gt; is<br>
&gt;&gt; &gt;&gt; linked in the source.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; On Thu, Dec 2, 2010 at 8:50 AM, Otto &lt;<a href="mailto:otto@ottodestruct.com">otto@ottodestruct.com</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; On Thu, Dec 2, 2010 at 3:02 AM, Sayontan Sinha &lt;<a href="mailto:sayontan@gmail.com">sayontan@gmail.com</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt;&gt; &gt; I am curious as to what qualifies as a better way of doing things.<br>
&gt;&gt; E.g.<br>
&gt;&gt; &gt;&gt;&gt; &gt; I<br>
&gt;&gt; &gt;&gt;&gt; &gt; have code where depending on selections certain stylesheets are<br>
&gt;&gt; grouped<br>
&gt;&gt; &gt;&gt;&gt; &gt; together, then either they are compressed and/or minified.<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; See, that sounds awfully functional to me. Why would you want the<br>
&gt;&gt; &gt;&gt;&gt; theme to be doing that?<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; A theme is supposed to describe how the site looks, not how the site<br>
&gt;&gt; &gt;&gt;&gt; works. Sure, for custom jobs, we all do it and put this sort of<br>
&gt;&gt; thing<br>
&gt;&gt; &gt;&gt;&gt; in the theme, but remember that the directory is supposed to hold<br>
&gt;&gt; &gt;&gt;&gt; themes to be used for public consumption. Anybody can use them.<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; So doesn&#39;t it make a bit more sense to make this sort of<br>
&gt;&gt; &gt;&gt;&gt; compression/minification more generic, able to apply to any theme,<br>
&gt;&gt; and<br>
&gt;&gt; &gt;&gt;&gt; then to put it in a plugin?<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Also, look into wp_enqueue_style, which is capable of minification<br>
&gt;&gt; and<br>
&gt;&gt; &gt;&gt;&gt; combining css files.<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; -Otto<br>
&gt;&gt; &gt;&gt;&gt; _______________________________________________<br>
&gt;&gt; &gt;&gt;&gt; theme-reviewers mailing list<br>
&gt;&gt; &gt;&gt;&gt; <a href="mailto:theme-reviewers@lists.wordpress.org">theme-reviewers@lists.wordpress.org</a><br>
&gt;&gt; &gt;&gt;&gt; <a href="http://lists.wordpress.org/mailman/listinfo/theme-reviewers" target="_blank">http://lists.wordpress.org/mailman/listinfo/theme-reviewers</a><br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; --<br>
&gt;&gt; &gt;&gt; Sayontan Sinha<br>
&gt;&gt; &gt;&gt; <a href="http://mynethome.net" target="_blank">http://mynethome.net</a> | <a href="http://mynethome.net/blog" target="_blank">http://mynethome.net/blog</a><br>
&gt;&gt; &gt;&gt; --<br>
&gt;&gt; &gt;&gt; Beating Australia in Cricket is like killing a celebrity. The death<br>
&gt;&gt; gets<br>
&gt;&gt; &gt;&gt; more coverage than the crime.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; _______________________________________________<br>
&gt;&gt; &gt;&gt; theme-reviewers mailing list<br>
&gt;&gt; &gt;&gt; <a href="mailto:theme-reviewers@lists.wordpress.org">theme-reviewers@lists.wordpress.org</a><br>
&gt;&gt; &gt;&gt; <a href="http://lists.wordpress.org/mailman/listinfo/theme-reviewers" target="_blank">http://lists.wordpress.org/mailman/listinfo/theme-reviewers</a><br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; --<br>
&gt;&gt; &gt; My Blog: <a href="http://www.pross.org.uk/" target="_blank">http://www.pross.org.uk/</a><br>
&gt;&gt; &gt; Plugins : <a href="http://www.pross.org.uk/plugins/" target="_blank">http://www.pross.org.uk/plugins/</a><br>
&gt;&gt; &gt; Themes: <a href="http://wordpress.org/extend/themes/profile/pross" target="_blank">http://wordpress.org/extend/themes/profile/pross</a><br>
&gt;&gt; &gt; _______________________________________________<br>
&gt;&gt; &gt; theme-reviewers mailing list<br>
&gt;&gt; &gt; <a href="mailto:theme-reviewers@lists.wordpress.org">theme-reviewers@lists.wordpress.org</a><br>
&gt;&gt; &gt; <a href="http://lists.wordpress.org/mailman/listinfo/theme-reviewers" target="_blank">http://lists.wordpress.org/mailman/listinfo/theme-reviewers</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; theme-reviewers mailing list<br>
&gt;&gt; <a href="mailto:theme-reviewers@lists.wordpress.org">theme-reviewers@lists.wordpress.org</a><br>
&gt;&gt; <a href="http://lists.wordpress.org/mailman/listinfo/theme-reviewers" target="_blank">http://lists.wordpress.org/mailman/listinfo/theme-reviewers</a><br>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Sayontan Sinha<br>
&gt; <a href="http://mynethome.net" target="_blank">http://mynethome.net</a> | <a href="http://mynethome.net/blog" target="_blank">http://mynethome.net/blog</a><br>
&gt; --<br>
&gt; Beating Australia in Cricket is like killing a celebrity. The death gets<br>
&gt; more coverage than the crime.<br>
&gt; _______________________________________________<br>
&gt; theme-reviewers mailing list<br>
&gt; <a href="mailto:theme-reviewers@lists.wordpress.org">theme-reviewers@lists.wordpress.org</a><br>
&gt; <a href="http://lists.wordpress.org/mailman/listinfo/theme-reviewers" target="_blank">http://lists.wordpress.org/mailman/listinfo/theme-reviewers</a><br>
&gt;<br>
<br>
<br>
_______________________________________________<br>
theme-reviewers mailing list<br>
<a href="mailto:theme-reviewers@lists.wordpress.org">theme-reviewers@lists.wordpress.org</a><br>
<a href="http://lists.wordpress.org/mailman/listinfo/theme-reviewers" target="_blank">http://lists.wordpress.org/mailman/listinfo/theme-reviewers</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Sayontan Sinha<br><a href="http://mynethome.net" target="_blank">http://mynethome.net</a> | <a href="http://mynethome.net/blog" target="_blank">http://mynethome.net/blog</a><br>
--<br>Beating Australia in Cricket is like killing a celebrity. The death gets more coverage than the crime.<br><br>