将用户元素保存为单个值或数组

时间:2017-06-09 12:28:13

标签: wordpress

我正在开发一个插件,它将为绑定到该插件的某些用户节省大约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
);

2 个答案:

答案 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前面加以避免碰撞。