I think those are valid arguments, and I agree with them. But shouldn&#39;t we take those arguments to Trac or wpdevel or somewhere? From the perspective of Theme development, I&#39;m simply looking at it as, &quot;core has implemented it this way, so here&#39;s a heads-up for how we should probably be implementing it, too&quot;.<div>
<br></div><div>In other words: we&#39;re mostly just downstream of core decisions here.<br><div><br></div><div>(And feel free to pick on me; I&#39;m pretty thick-skinned. ;) )</div><div><br></div><div>Chip<br><br><div class="gmail_quote">
On Mon, Jul 25, 2011 at 10:00 PM, Doug Stewart <span dir="ltr">&lt;<a href="mailto:zamoose@gmail.com">zamoose@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;">
Then let&#39;s go the whole way: pass a simple array to a theme options<br>
page and have core generate ALL the markup -- everything else is just<br>
dalliance.<br>
<br>
And again, not to pick on you Chip, but the plain meaning of the<br>
template tag just isn&#39;t, well, *plain* to a non-initiate.<br>
<br>
Shouldn&#39;t it be &quot;print_submit_button()&quot; or &quot;display_submit_button()&quot;?<br>
&quot;submit_button()&quot; suggests that it&#39;s submitting something related to a<br>
button, *NOT* outputting code.<br>
<div><div></div><div class="h5"><br>
On Mon, Jul 25, 2011 at 10:55 PM, Chip Bennett &lt;<a href="mailto:chip@chipbennett.net">chip@chipbennett.net</a>&gt; wrote:<br>
&gt; I totally agree with the namespacing thing. I wish core would practice what<br>
&gt; it preaches just a bit better with these kinds of functions.<br>
&gt; But, my example was intentionally complex. Basic examples are pretty<br>
&gt; straightforward:<br>
&gt; &lt;?php submit_button( $button_text, $button_type, $name, $wrapper ); ?&gt;<br>
&gt; $button_text: button text<br>
&gt; $button_type: &#39;primary&#39; or &#39;secondary&#39; (actually, quite useful, as it helps<br>
&gt; ensure button style fits WP UI)<br>
&gt; $name: name attribute<br>
&gt; $wrapper: (boolean) whether or not to wrap button in &lt;p&gt; tags.<br>
&gt; So:<br>
&gt;<br>
&gt; &lt;?php submit_button( &quot;Save Settings&quot;, &#39;primary&#39;, &#39;submit&#39; ); ?&gt;<br>
&gt; &lt;?php submit_button( &quot;Reset Defaults&quot;, &#39;secondary&#39;, &#39;reset&#39; ); ?&gt;<br>
&gt;<br>
&gt; Is all you really need.<br>
&gt; And in the first case, you can even get away with:<br>
&gt;<br>
&gt; &lt;?php submit_button(); ?&gt;<br>
&gt;<br>
&gt; No need to pass any arguments whatsoever.<br>
&gt; If I had to guess, I would guess that the objective here is to abstract away<br>
&gt; as much of the settings form markup as absolutely possible - which is an<br>
&gt; objective that I would actually agree with. By abstracting the form markup,<br>
&gt; it becomes MUCH easier to make UI changes in the future, in a way that will<br>
&gt; ensure forward-compatibility for existing code.<br>
&gt; Chip<br>
&gt; On Mon, Jul 25, 2011 at 9:39 PM, Doug Stewart &lt;<a href="mailto:zamoose@gmail.com">zamoose@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Okay, need to get this off my chest:<br>
&gt;&gt; This particular example + the checked()/selected() stuff has been<br>
&gt;&gt; driving me batty. They&#39;re examples of over-complication on WordPress&#39;<br>
&gt;&gt; part when perfectly viable pure PHP/HTML solutions are tried, true,<br>
&gt;&gt; tested and far more approachable.<br>
&gt;&gt;<br>
&gt;&gt; I mean, seriously, look at Chip&#39;s code (and not to single him out,<br>
&gt;&gt; it&#39;s just the only code to point to here): it&#39;s complicated and<br>
&gt;&gt; unusable/unapproachable without an XRef for the possible arguments. At<br>
&gt;&gt; least in the past, a person with PHP experience had a chance to read a<br>
&gt;&gt; simple ternary statment (in the case of checked()/selected()) or a<br>
&gt;&gt; person with HTML savvy can read the plain meaning of the Submit<br>
&gt;&gt; buttons. It&#39;s cleverness at the expense of readability/approachability<br>
&gt;&gt; and I think it&#39;s a mistake.<br>
&gt;&gt;<br>
&gt;&gt; Plus they&#39;re not even namespaced.<br>
&gt;&gt;<br>
&gt;&gt; Gah.<br>
&gt;&gt;<br>
&gt;&gt; Just my $.02.<br>
&gt;&gt;<br>
&gt;&gt; On Mon, Jul 25, 2011 at 12:58 PM, Chip Bennett &lt;<a href="mailto:chip@chipbennett.net">chip@chipbennett.net</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt; &gt; The submit_button() function is flexible enough to handle resetting to<br>
&gt;&gt; &gt; defaults. :)<br>
&gt;&gt; &gt; For example, here&#39;s my old code from Oenology (note that I pass a &quot;tab&quot;<br>
&gt;&gt; &gt; name<br>
&gt;&gt; &gt; to the button name attribute):<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; &lt;input name=&quot;theme_oenology_options[submit-&lt;?php echo $tab; ?&gt;]&quot;<br>
&gt;&gt; &gt; type=&quot;submit&quot; class=&quot;button-primary&quot; value=&quot;Save Settings&quot; /&gt;<br>
&gt;&gt; &gt; &lt;input name=&quot;theme_oenology_options[reset-&lt;?php echo $tab; ?&gt;]&quot;<br>
&gt;&gt; &gt; type=&quot;submit&quot; class=&quot;button-secondary&quot; value=&quot;Reset Defaults&quot; /&gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; And here&#39;s the replacement code:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; &lt;?php submit_button( __( &#39;Save Settings&#39;, &#39;oenology&#39; ), &#39;primary&#39;,<br>
&gt;&gt; &gt; &#39;theme_oenology_options[submit-&#39; . $tab . &#39;]&#39;, false ); ?&gt;<br>
&gt;&gt; &gt; &lt;?php submit_button( __( &#39;Reset Defaults&#39;, &#39;oenology&#39; ), &#39;secondary&#39;,<br>
&gt;&gt; &gt; &#39;theme_oenology_options[reset-&#39; . $tab . &#39;]&#39;, false ); ?&gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; The rendered output is exactly the same in both cases.<br>
&gt;&gt; &gt; Assuming that your &quot;reset defaults&quot; functionality looks at the NAME<br>
&gt;&gt; &gt; attribute as part of the $_POST data passed to $input, then you&#39;re good<br>
&gt;&gt; &gt; to<br>
&gt;&gt; &gt; go.<br>
&gt;&gt; &gt; Chip<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; On Mon, Jul 25, 2011 at 11:44 AM, George Mamadashvili<br>
&gt;&gt; &gt; &lt;<a href="mailto:georgemamadashvili@gmail.com">georgemamadashvili@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Hello Chip.<br>
&gt;&gt; &gt;&gt; I noticed that function too and liked it, but if theme author what to<br>
&gt;&gt; &gt;&gt; provide &quot;Reset to Default&quot; button, does it still need to be hard-coded?<br>
&gt;&gt; &gt;&gt; I<br>
&gt;&gt; &gt;&gt; had no to dig in this function, can we this function for reset button<br>
&gt;&gt; &gt;&gt; too?<br>
&gt;&gt; &gt;&gt; Best<br>
&gt;&gt; &gt;&gt; George<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; On Mon, Jul 25, 2011 at 8:25 PM, Chip Bennett &lt;<a href="mailto:chip@chipbennett.net">chip@chipbennett.net</a>&gt;<br>
&gt;&gt; &gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Good morning developers/reviewers!<br>
&gt;&gt; &gt;&gt;&gt; Just a note, from something that I noticed being used in Twenty<br>
&gt;&gt; &gt;&gt;&gt; Eleven:<br>
&gt;&gt; &gt;&gt;&gt; the submit_button() function, which replaces hard-coded form submit<br>
&gt;&gt; &gt;&gt;&gt; buttons.<br>
&gt;&gt; &gt;&gt;&gt; I would strongly recommend making use of it in Theme Settings Page<br>
&gt;&gt; &gt;&gt;&gt; forms;<br>
&gt;&gt; &gt;&gt;&gt; as with other &quot;doing things the core-supported way&quot; criteria, I would<br>
&gt;&gt; &gt;&gt;&gt; expect<br>
&gt;&gt; &gt;&gt;&gt; this one to show up in the Guidelines at some point in the future.<br>
&gt;&gt; &gt;&gt;&gt; Chip<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; 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;<br>
&gt;&gt; &gt;<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; &gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; --<br>
&gt;&gt; -Doug<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;<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>
&gt;<br>
<br>
<br>
<br>
--<br>
-Doug<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>