[wp-hackers] repeating fields in usermeta?

Casey Bisson casey.bisson at gmail.com
Thu Apr 16 16:35:46 GMT 2009


In comparing the various *_post_meta functions against the *_usermeta  
functions, it looks like the post meta stuff has had a lot more  
development cycles than user meta. Though I may be saying that only  
because the post meta functions have stronger caching support.

Here are the two sets of functions:

Post meta, found in wp-includes/post.php:
http://core.trac.wordpress.org/browser/trunk/wp-includes/post.php

add_post_meta()
delete_post_meta()
get_post_meta()
update_post_meta()
delete_post_meta_by_key()
update_postmeta_cache()

User meta, found in wp-includes/user.php:
http://core.trac.wordpress.org/browser/trunk/wp-includes/user.php

delete_usermeta()
get_usermeta()
update_usermeta()

Implementing post meta-style support looks pretty easy, especially if  
I adopt the *_post_meta functions as the base, rather than trying to  
start with the *_usermeta functions. Backwards compatibility could  
then be maintained by calling the new functions from the old. That  
approach looks a lot more straightforward than patching up the  
existing *_usermeta functions, even if it would likely result in a  
larger overall patch.

Thoughts?



On Apr 16, 2009, at 10:13 AM, SoJ Web wrote:

> Yeah, looking at the function, that would be a pain. I'm surprised  
> the user meta functions don't allow returning arrays of meta values;  
> I'd think having that ability would be ideal, and it shouldn't be  
> hard to patch. You'd have the added benefit of it being consistent  
> with the way the post meta function works.
>
>> Storing email addresses in a serialized array would make searching  
>> for a user by email address difficult.
>>
>> My choices so far appear to be:
>>
>> Create a separate table for email addys.
>> Create my own functions to enter and read email addys in usermeta.
>> Patch the existing functions to support this use case while  
>> maintaining backwards compatibility.
>>
>>
>>> Would it not be possible to store the e-mail addresses and phone  
>>> numbers as serialized arrays under one meta key?
>>>
>>>
>>>> An application I'm working on needs to store an arbitrary number  
>>>> of email addresses and phone numbers per user. The wp_users table  
>>>> obviously isn't the place, but the wp_usermeta table might not be  
>>>> either. The get_ and update_usermeta functions aren't built for  
>>>> it, anyway.
>>>>
>>>> The various postmeta functions are very smart about handling  
>>>> multiple entries of the same meta_key per post, but not the  
>>>> usermeta functions. Is that by design?


More information about the wp-hackers mailing list