[theme-reviewers] WP.org theme preview
Michael Fields
michael at mfields.org
Thu Aug 4 00:16:14 UTC 2011
Doug,
I usually use something similar to this for arrays of settings.
Seems to work rather well.
<?php
function my_theme_get_options( $key = null ) {
$options = get_option( 'mytheme' );
$defaults = array(
'color_text' => '#333',
'color_links' => '#f00',
'show_slider' => '1',
'slider-speed' => '300',
'something' => 'value',
);
$options = wp_parse_args( $options, $defaults );
if ( ! empty( $key ) ) {
if ( isset( $options[$key] ) ) {
return $options[$key];
}
else {
return null;
}
}
return $options;
}
?>
On Aug 3, 2011, at 5:07 PM, Doug Stewart wrote:
> This contradicts a hard-and-fast WPTRT rule: NO MULTIPLE OPTIONS.
>
> Otto, unless there's a different way to handle get_option() for
> serialized arrays and define a default that way, I can't see any way
> of satisfying both requirements simultaneously.
>
>
> On Wed, Aug 3, 2011 at 6:18 PM, Chip Bennett <chip at chipbennett.net> wrote:
>> Again: I'm not arguing what's best-practice. (I certainly concede that
>> point.)
>> Rather: I'm arguing against the "I'll remove any Theme that initializes
>> default options" statement.
>> "Bad code" is not inherently a reason to suspend Themes. And if we want to
>> make it a Guideline, that's great; but I see no reason not to follow our
>> established procedure for making such changes.
>> Chip
>> On Wed, Aug 3, 2011 at 5:12 PM, Otto <otto at ottodestruct.com> wrote:
>>>
>>> On Wed, Aug 3, 2011 at 5:02 PM, Chip Bennett <chip at chipbennett.net> wrote:
>>>> 1) The Theme Review Guidelines don't currently say anything about
>>>> handling
>>>> of default options, or how to initialize them. I don't agree with a
>>>> unilateral, blanket statement (or action) of removing Themes based on
>>>> this
>>>> criterion.
>>>
>>> It's not really a matter of guidelines. It's simply a bad way to write
>>> code.
>>>
>>>> 2) Any such statement (or action) would impact almost EVERY SINGLE THEME
>>>> with Theme Options in the repository.
>>>
>>> Not at all. It's perfectly easy to have theme options with defaults.
>>> Just don't set them by default when nobody actually changes them. I've
>>> posted about this here before.
>>>
>>> Basically, if you have an init function that does something like a)
>>> check for options and then b) set options if they're not set, then
>>> you're doing it wrong. Nobody wants a theme setting a bunch of crap in
>>> the database the moment it's activated. It's totally unnecessary.
>>>
>>> Example:
>>>
>>> $my_option = get_option('my_option', 'default');
>>>
>>> If the my_option is set, then it's gotten from the database.
>>> Otherwise, it is "default". This is the proper way to do defaults.
>>>
>>> Example 2: Using a big-array-of-options.
>>>
>>> $defaults = array(
>>> 'option1'=>'value1',
>>> 'option2'=>'value2',
>>> //etc
>>> );
>>> $options = wp_parse_args( get_option('theme-options',array() ),
>>> $defaults);
>>>
>>> Any option not set in the theme-options array will get the default
>>> value used for it instead in the resulting $options array.
>>>
>>> Defaults should be set in variables at the time of getting the
>>> options, not pre-set and shoved into the database at some kind of init
>>> or activation time. This is simply because you cannot tell on what
>>> sort of setup your code will be running for sure, and you don't know
>>> what's in the database in advance. The contents of the database are
>>> outside your control and can be changed by other things, basically, so
>>> your code should be written with that in mind.
>>>
>>> For example, in the theme-previewer, we might just implement a
>>> no-options policy by making the tables read-only (that is one of the
>>> long term plans, in fact). So setting defaults in the DB on such a
>>> setup certainly wouldn't work.
>>>
>>> -Otto
>>> _______________________________________________
>>> theme-reviewers mailing list
>>> theme-reviewers at lists.wordpress.org
>>> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>>
>>
>> _______________________________________________
>> theme-reviewers mailing list
>> theme-reviewers at lists.wordpress.org
>> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>>
>>
>
>
>
> --
> -Doug
> _______________________________________________
> theme-reviewers mailing list
> theme-reviewers at lists.wordpress.org
> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
More information about the theme-reviewers
mailing list