<div dir="ltr">Interaction with the Theme previewer is one thing, and important. But I'm primarily concerned with Theme interaction with users' databases.<div><br></div><div>Interaction with the Settings API is not in any way a hindrance to a Theme using sane defaults without relying on options being saved explicitly to the database. All that is required is the Theme defining its own defaults, and using them in lieu of options in the database.</div>
<div><br></div><div>When you call your Theme options, just use the following:</div><div><br></div><div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><pre style="font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12px;margin-top:0px;margin-bottom:0px;color:rgb(51,51,51);line-height:18px">
<div class="" id="LC655" style="padding-left:10px"><span class="" style="font-weight:bold">function</span> <span class="" style="color:rgb(153,0,0);font-weight:bold">themeslug_get_options</span><span class="">()</span> <span class="">{</span></div>
<div class="" id="LC656" style="padding-left:10px">        <span class="" style="color:rgb(153,153,136);font-style:italic">// Get the option defaults</span></div><div class="" id="LC657" style="padding-left:10px">        <span class="" style="color:rgb(0,128,128)">$option_defaults</span> <span class="" style="font-weight:bold">=</span> <span class="">themeslug_get_option_defaults</span><span class="">();</span></div>
<div class="" id="LC658" style="padding-left:10px">        <span class="" style="color:rgb(153,153,136);font-style:italic">// Globalize the variable that holds the Theme options</span></div><div class="" id="LC659" style="padding-left:10px">
        <span class="" style="font-weight:bold">global</span> <span class="" style="color:rgb(0,128,128)">$themeslug_options</span><span class="">;</span></div><div class="" id="LC660" style="padding-left:10px">        <span class="" style="color:rgb(153,153,136);font-style:italic">// Parse the stored options with the defaults</span></div>
<div class="" id="LC661" style="padding-left:10px">        <span class="" style="color:rgb(0,128,128)">$themeslug_options</span> <span class="" style="font-weight:bold">=</span> <span class="">wp_parse_args</span><span class="">(</span> <span class="">get_option</span><span class="">(</span> <span class="" style="color:rgb(221,17,68)">'theme_themeslug_options'</span><span class="">,</span> <span class="" style="font-weight:bold">array</span><span class="">()</span> <span class="">),</span> <span class="" style="color:rgb(0,128,128)">$option_defaults</span> <span class="">);</span></div>
<div class="" id="LC662" style="padding-left:10px">        <span class="" style="color:rgb(153,153,136);font-style:italic">// Return the parsed array</span></div><div class="" id="LC663" style="padding-left:10px">        <span class="" style="font-weight:bold">return</span> <span class="" style="color:rgb(0,128,128)">$themeslug_options</span><span class="">;</span></div>
<div class="" id="LC664" style="padding-left:10px"><span class="">}</span></div></pre></div></blockquote></div><div><br></div><div>Wrap your option defaults in a function that can be called. Parse the defaults against the database. Return the results. Just call this wrapper function instead of calling get_option() directly. Simple.</div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Oct 24, 2013 at 1:14 PM, Bruce Wampler <span dir="ltr"><<a href="mailto:weavertheme@gmail.com" target="_blank">weavertheme@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div><div><div>I'm hearing two things here:<br><br></div>1. Theme Previewer must work without relying on any options set in the database - whether or not the theme has been activated or not previously.<br>

<br></div>2. Eventually, Chip doesn't want anything written to the database unless the user explicitly saves options, even if the theme has been activated.<br><br></div>This is two different things, and at least for my themes, presents two very different issues. They show the default settings just fine in preview without any interaction with the database, and this makes perfect sense. But once a theme has been activated, it relies on being able to save the default settings as an option to display the options admin pages correctly. <br>

<br></div>I would hope being able to Preview correctly is the critical issue here?<br><br>The latter is a very difficult issue for my themes at least, partly because of their interaction with the WP Settings API. Hope I don't need to cross that bridge.<span class="HOEnZb"><font color="#888888"><br>

</font></span></div><span class="HOEnZb"><font color="#888888"><br></font></span></div><span class="HOEnZb"><font color="#888888">Bruce Wampler<br><div class="gmail_extra"><br><br><br></div></font></span></div>
<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>
<br></blockquote></div><br></div>