[wp-hackers] Storing Arbitrary Data as Custom Post Types

Dougal Campbell dougal at gunters.org
Wed Dec 9 20:02:41 UTC 2009


On Dec 9 2009 1:43 PM, Otto wrote:
> On Wed, Dec 9, 2009 at 10:19 AM, Dougal Campbell<dougal at gunters.org>  wrote:
>    
>> In a nutshell, my proposal was going to be that we use a naming convention
>> like: [area]:[slug]:[name]
>>
>> For example, if you had a plugin named "Tweet Fu" (which has the slug
>> 'tweet-fu' in the respository), you might have an option named:
>> plugin:tweet-fu:last_tweet_timestamp
>>
>> Or if you have a theme that saves its own option:
>> theme:my-theme-name:header_image_filename
>>      
> Generally speaking, most plugins should be using a single option
> holding an array of their settings. I tend to go with
> pluginname-options, personally.
>
> Any "standard" should take this into account, as keeping every option
> in a separate row can be bad practice.
>    

I think part of the reason that consolidating multiple options into a 
single array is considered best-practice now, is *because of* the 
current state of option chaos. That, and the fact that you don't have to 
make 10 separate db calls to get 10 different options. But if the 
options were namespaced consistently you could just SELECT ... WHERE 
option_name LIKE 'plugin:foo-plug:%' and get all your info in one call 
anyways.

Regardless, even if everyone used an array for all options (which is 
fine for probably 99% of the plugins out there), the namespacing idea 
would still make it easier to make sense of things in those rare cases 
when you have to dive directly into the table for some reason.

Again, I'm not sure whether or not its an idea worth trying to champion. 
But at the least, I figure it's at least worth seeing if some more solid 
best-practices could be extracted from the discussion. Currently 
(AFAIK), the extent of best-practices around saving options is "store 
all values together in an array whenever possible" and "prefix your 
option name", with little guidance as to a prefix format.

Do we *need* to define a suggested prefix format? I dunno -- maybe it's 
overkill. There's no easy way to enforce it without making changes to 
core (though I have some ideas about that). Would a consistent prefix 
format be useful? That's what I'd like us to discuss.

-- 
Dougal Campbell <dougal at gunters.org>
http://dougal.gunters.org/
http://twitter.com/dougal
http://twitual.com/


More information about the wp-hackers mailing list