4 lines of code, in 1 Plugin, distributed to thousands of users<div><br></div><div>vs</div><div><br></div><div>4 lines of code, in thousands of Themes, to fix one Plugin</div><div><br></div><div>Besides: WordPress *already* provides the &quot;basic functionality for advanced users to take advantage of&quot;.</div>
<div><br></div><div>Chip<br><div><br><div class="gmail_quote">On Wed, Jun 29, 2011 at 4:39 PM, Gmail <span dir="ltr">&lt;<a href="mailto:darrenslatten@gmail.com">darrenslatten@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Adding output buffering and a custom filter to wp_head and wp_footer requires...what, 4 extra lines of code? I&#39;m having a very difficult time understanding why &quot;contact the plugin author and ask them to change their code&quot; would be the best approach.<br>

<br>
Also, I&#39;m not suggesting a hard-coded fix for specific plugins--I&#39;m only suggesting that a theme provides that basic functionality for advanced users to take advantage of. This would require adding custom code to functions.php.<br>

<br>
So...4 lines of code to give advanced users control of plugin output...or contact every plugin author and ask them to update their code?<br>
<br>
-Darren Slatten<br>
<div><div></div><div class="h5"><br>
On Jun 29, 2011, at 4:18 PM, Simon Prosser &lt;<a href="mailto:pross@pross.org.uk">pross@pross.org.uk</a>&gt; wrote:<br>
<br>
&gt; Surely the contact form should ONLY be loading it js and css in pages<br>
&gt; and posts that have comments enabled, if not, thats poor coding for<br>
&gt; the plugin, and rather than coding a theme around the plugin, you<br>
&gt; should perhaps be hassling the author to change said plugin to use<br>
&gt; some logic in wp_head.<br>
&gt;<br>
&gt; On 29 June 2011 22:13, Gmail &lt;<a href="mailto:darrenslatten@gmail.com">darrenslatten@gmail.com</a>&gt; wrote:<br>
&gt;&gt; So...a better approach would be what? Rewrite all plugins that don&#39;t follow<br>
&gt;&gt; best practices?<br>
&gt;&gt; That still wouldn&#39;t address issues like client-side load order (e.g. to<br>
&gt;&gt; optimize page load times).<br>
&gt;&gt; A real example where wp_head filtering is useful is in conjunction with the<br>
&gt;&gt; Contact Form 7 plugin. By default, enabling that plugin would insert a CSS<br>
&gt;&gt; file and script into the head of every page. With a custom filter and a<br>
&gt;&gt; conditional statement, I can make sure only the contact form page loads<br>
&gt;&gt; those resources.<br>
&gt;&gt; In many cases, this can also be achieved &quot;more elegantly&quot; by removing hooked<br>
&gt;&gt; functions, but filtering the output buffer (i.e., working with regex) is<br>
&gt;&gt; much faster/easier than digging through plugins, searching for the custom<br>
&gt;&gt; function code that hooked into wp_head.<br>
&gt;&gt; -Darren Slatten<br>
&gt;&gt; On Jun 29, 2011, at 1:44 PM, Chip Bennett &lt;<a href="mailto:chip@chipbennett.net">chip@chipbennett.net</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; I think you have that approach exactly backwards. Plugins should be looking<br>
&gt;&gt; after themselves, by hooking properly into appropriate hooks. Theme and<br>
&gt;&gt; Plugins should mostly stay out of one another&#39;s way.<br>
&gt;&gt; If Theme and Plugins all enqueue jQuery properly, then there will *never* be<br>
&gt;&gt; duplicate jQuery scripts enqueued.<br>
&gt;&gt; Chip<br>
&gt;&gt; On Wed, Jun 29, 2011 at 11:45 AM, Gmail &lt;<a href="mailto:darrenslatten@gmail.com">darrenslatten@gmail.com</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I use output buffering on wp_head() and wp_footer(), in order to give my<br>
&gt;&gt;&gt; theme complete control over them. Since most plugins hook onto these, they<br>
&gt;&gt;&gt; can become cluttered with scripts and CSS file links. By using OB and a<br>
&gt;&gt;&gt; custom filter, I can do things like (1) remove duplicate jQuery scripts, and<br>
&gt;&gt;&gt; (2) optimize the order that CSS and scripts are loaded in. Essentially this<br>
&gt;&gt;&gt; gives my theme the final say in what resources are loaded into the page,<br>
&gt;&gt;&gt; allowing me to &quot;clean up after&quot; plugins.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; -Darren Slatten<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On Jun 29, 2011, at 10:12 AM, Vicky Arulsingam<br>
&gt;&gt;&gt; &lt;<a href="mailto:vicky.arulsingam@gmail.com">vicky.arulsingam@gmail.com</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; I&#39;ve asked the theme author to explain the usage. If there&#39;s a valid<br>
&gt;&gt;&gt;&gt; use for it then it should be allowed but I haven&#39;t a clue how.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; On 6/29/11, Ryan Hellyer &lt;<a href="mailto:ryan@pixopoint.com">ryan@pixopoint.com</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt; There are many reasons to use output buffering (ob_start etc), but<br>
&gt;&gt;&gt;&gt;&gt; they would rarely be used within a theme. I&#39;ve seen themes which use<br>
&gt;&gt;&gt;&gt;&gt; buffering as a way to dynamically minify the markup, but that&#39;s a<br>
&gt;&gt;&gt;&gt;&gt; horrid way to do it - much better incorporated within a caching plugin<br>
&gt;&gt;&gt;&gt;&gt; IMO.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; There may be a practical use for output buffer in a theme, but I&#39;m<br>
&gt;&gt;&gt;&gt;&gt; darned if I can think of a good example. I wouldn&#39;t want to see it<br>
&gt;&gt;&gt;&gt;&gt; banned outright, as someone may come up with a cunning use for it that<br>
&gt;&gt;&gt;&gt;&gt; none of us have thought of.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Perhaps the theme check plugin could check for output buffering<br>
&gt;&gt;&gt;&gt;&gt; functions and leave a request for the theme developer to provide a<br>
&gt;&gt;&gt;&gt;&gt; reason for using it? That way they&#39;ll know it&#39;s non-standard and<br>
&gt;&gt;&gt;&gt;&gt; provide a reason (good or bad) for the theme reviewers to read. Could<br>
&gt;&gt;&gt;&gt;&gt; potentially save a little to and fro&#39;ing in the future. Just an idea.<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;&gt;<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; Vicky Arulsingam<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; _______________________________________________<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;<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;&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;&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; My Blog: <a href="http://www.pross.org.uk/" target="_blank">http://www.pross.org.uk/</a><br>
&gt; Plugins : <a href="http://www.pross.org.uk/plugins/" target="_blank">http://www.pross.org.uk/plugins/</a><br>
&gt; Themes: <a href="http://wordpress.org/extend/themes/profile/pross" target="_blank">http://wordpress.org/extend/themes/profile/pross</a><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>
_______________________________________________<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></div></div>