我正在开发一个插件,它将为绑定到该插件的某些用户节省大约10个自定义用户元数据。在这些metas中我们发现:地址,邮编,职业等......
这些元数据只会被插件使用,而且大多数(如果不是总是)所有这些元素都会从数据库中一起提取出来,以便在管理员的表格视图中显示。
所以,我正在考虑保存这些价值观的最佳方法。
我可以这样做:
add_user_meta( $user_id, 'address', 'kings street 45');
add_user_meta( $user_id, 'zip', '12345');
add_user_meta( $user_id, 'occupation', 'nurse');
... some more meta
或者这样做会更好:
add_user_meta( $user_id, 'plugin_name_user_meta', array(
'address' => 'kings street 45'
'zip' => '12345'
'occupation' => 'nurse')
... some more meta
);
答案 0 :(得分:2)
In Wordpress I prefer to work with arrays because in helps keeping my data organized, so I would go the second way. Nevertheless if you go the first way, prefix all the metas with a unique id related to your plugin.
答案 1 :(得分:2)
我不同意第一个答案,我会使用你的第一个建议。
为什么呢?因为如果对每个字段使用add_user_meta
,则每个值在数据库中都有一个单独的字段。这意味着:
1)您可以执行元和通配符查询,例如" 选择所有使用ZIP以11 "开头的用户。如果保存数组,这是不可能的,特别是因为数组将以序列化格式保存。
保持这种可能性开放! 有一天,您可能希望对此数据进行复杂的查询,即使目前情况并非如此。
看看WP Meta Query类,甚至更好的WP用户查询类:
https://codex.wordpress.org/Class_Reference/WP_Meta_Query
https://codex.wordpress.org/Class_Reference/WP_User_Query#Custom_Field_Parameters
2)您在可扩展性方面没有缺点:由于这些字段已经保存在元表中而不是固定列中,您可以动态添加和删除值。
然而@Juan对前缀的提示是对的:你肯定应该在你的meta_values前面加以避免碰撞。