Wordpress - get_user_meta() to Return User Meta Only for Current Blog in Multi Site

WordPress distinguishes usermeta keys between sites by using the database prefix for each site.

For example, instead of using the favorite_posts key, you'd use the meta key wp_23_favorite_posts. To get the prefix, you can use $wpdb->get_blog_prefix().

But wait, there's actually a whole API dedicated to this. Rather than using *_user_meta(), use *_user_option(). These are internally translated to be against the individual site.

And, it's easily integrated into your existing plugin. get_user_option() checks against a site-specific key first, but if it doesn't find anything, it falls back to a user-wide meta key. So go ahead and switch to get_user_option() and your existing plugin will work on single site without a problem.

Here are the function definitions:

./wp-includes/user.php:251:function get_user_option( $option, $user = 0 )
./wp-includes/user.php:293:function update_user_option( $user_id, $option_name, $new_value )
./wp-includes/user.php:322:function delete_user_option( $user_id, $option_name )

why not store the blog id together with the array of postIds, so you will have something like this stored in the user meta data:

Array
(
   [blogid1] => Array(1,2,4,7),
   [blogid2] => Array(3,6,8,10)
)

you can use the global $blog_id to get the current blogid. On a non multisite setup, the blogid will be 0 and should still work when you try to get the posts out the array by

arr[$blog_id]