如何创建阵列用户元?

时间:2015-01-09 作者:Sufyan Hassan

我想创建一个包含数组内容的新用户元。我如何才能做到这一点?

另一个问题:使用此代码检查array 用户元在创建之前是否存在?

<?php
$key = \'add_me\';
$user_id= get_current_user_id();
$themeta = get_user_meta($user_id , $key, TRUE);
if($themeta != \'\') {
// code 
}
?>

1 个回复
最合适的回答,由SO网友:Nicolai Grossherr 整理而成

如《食品法典》第页所述get_user_meta():

NOTE
如果元值不存在且$single为true,则函数将返回空字符串。如果$single为false,则返回空数组。

所以我建议这样做:

! empty( $themeta )
对其他问题进行重新分级,只需按以下操作即可保存数组:

$the_meta_array = array (
    \'key-1\' => \'value-1\',
    \'key-2\' => \'value-2\',
);  
$user_id = 12345;  
$user_meta_key = \'your-key\';  
add_user_meta( $user_id, $user_meta_key, $the_meta_array );
这足以将数组保存到用户元数据中。add_user_meta() 只是一个包装add_metadata(), 后期使用maybe_serialize(), 因此,数组将另存为序列化字符串。

关于取回保存的阵列的另一个注意事项。您使用get_user_meta(), 这只是一个包装get_metadata(), 后期使用maybe_unserialize(), 因此将返回一个数组。但你可能想用$single 设置为true 以后检索元数据时。因为$single 参数为false:

$single
(布尔)(可选)如果为true,则返回元数据字段的值,如果为false,则返回数组。如果$key为空,则此参数无效
默认值:false

$user_id = 12345;  
$user_meta_key = \'your-key\'; 
$single = true;   
$retrieved_meta_array = get_user_meta( $user_id, $user_meta_key, $single );
如果您不使用true 您将在一个额外的数组中返回您的数组,如上所述,这很可能是您不想要的,因为在这种情况下,您保存的数组实际上是您想要返回的单个值-ergo设置$singletrue 就是这样做的。

结束

相关推荐

Sort users by meta_value_num

我在使用WP_User_Query 要按元数值对用户进行排序,我认为这很简单,因为它只按字母降序显示结果。 <?php $args = array( \'orderby\' => \'meta_value_num\', \'meta_key \' => \'epicredvote\', \'order\' => \'DESC\', ); // The Query $user_query = n