<div dir="ltr">By the same token: by Themes always hooking into after_setup_theme to define $content_width, a Plugin would always know that it is defined at that hook, and would not have to rely on the somewhat-more-arbitrary plugins_loaded (IIRC?) when functions.php executes.</div>
<div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jan 21, 2013 at 4:35 PM, Otto <span dir="ltr">&lt;<a href="mailto:otto@ottodestruct.com" target="_blank">otto@ottodestruct.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
After reviewing the code for a bit and looking at the possible<br>
problems, I think that doing it the way the Twenty themes do it is<br>
correct. That is to say, leave it outside a function scope and use<br>
code like this:<br>
<div class="im"><br>
if ( ! isset( $content_width ) )<br>
</div>        $content_width = 640;<br>
<br>
Alternatively, this method is more clear about what is going on, by<br>
explicitly stating that the value is global (even though a theme&#39;s<br>
functions.php already runs in the global context, for now). Note that<br>
theme-check probably doesn&#39;t recognize this as valid, yet.<br>
<br>
if ( ! isset( $GLOBALS[&#39;content_width&#39;] ) )<br>
        $GLOBALS[&#39;content_width&#39;] = 640;<br>
<br>
Reasons:<br>
<br>
- It is possible that a plugin which needs to know this information<br>
will hook to after_setup_theme in order to find it out, because<br>
after_setup_theme runs immediately after the theme&#39;s functions.php<br>
file is executed. If the theme puts it in a function hooked to that<br>
same action as well, then the theme&#39;s setup function may be called<br>
after the plugin is called upon and looks for it. Relying on usual<br>
hook priorities to get this order correct is uncertain, and best<br>
avoided.<br>
<br>
- A child can override a parent just fine if both child and parent<br>
implement this in this way. The child runs first, sets the<br>
content_width, then the parent runs, sees it&#39;s already set, and<br>
doesn&#39;t change it.<br>
<br>
I would treat this as a suggestion or best practice, it shouldn&#39;t fail<br>
a theme for doing it differently.<br>
<span class="HOEnZb"><font color="#888888"><br>
-Otto<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
On Mon, Jan 21, 2013 at 3:14 PM, Chip Bennett &lt;<a href="mailto:chip@chipbennett.net">chip@chipbennett.net</a>&gt; wrote:<br>
&gt; That is absolutely not something that a Theme should be &quot;not-approved&quot; for,<br>
&gt; though.<br>
&gt;<br>
&gt;<br>
&gt; On Mon, Jan 21, 2013 at 4:10 PM, Philip M. Hofer (Frumph)<br>
&gt; &lt;<a href="mailto:philip@frumph.net">philip@frumph.net</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; By that ticket, the $content_width in twentytwelve would fail<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; From: Caroline Moore<br>
&gt;&gt; Sent: Monday, January 21, 2013 5:39 AM<br>
&gt;&gt; To: <a href="mailto:theme-reviewers@lists.wordpress.org">theme-reviewers@lists.wordpress.org</a><br>
&gt;&gt; Subject: Re: [theme-reviewers] Need A Final Call<br>
&gt;&gt;<br>
&gt;&gt; The ticket, for reference:<br>
&gt;&gt; <a href="http://themes.trac.wordpress.org/ticket/10498" target="_blank">http://themes.trac.wordpress.org/ticket/10498</a><br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Monday, January 21, 2013 at 8:34 AM, Qamar Ashraf wrote:<br>
&gt;&gt;<br>
&gt;&gt; 1. About $content_width<br>
&gt;&gt;<br>
&gt;&gt; What is the best place for the $content_width<br>
&gt;&gt;<br>
&gt;&gt; A. Wrap $content_width definition in a callback, hooked into<br>
&gt;&gt; after_setup_theme - ( I am reviewing on this point )<br>
&gt;&gt; B. Placing $content_width outside a function<br>
&gt;&gt;<br>
&gt;&gt; 2. About IE Conditional Tags / Scripts like HTML 5 Shiv<br>
&gt;&gt;<br>
&gt;&gt; A. - Additional scripts should not be hard-coded in the header template.<br>
&gt;&gt; The most appropriate way to handle them to place it in a function that hooks<br>
&gt;&gt; into wp_head. ( I am reviewing on this point )<br>
&gt;&gt; B. Can be placed directly in header.php<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<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; _______________________________________________<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; 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>
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>