UPDATE_USER_META在现有值的顶部添加值

时间:2015-12-10 作者:Ohsik

我正在开发一个插件,它可以让人们在WP网站上喜爱作者。

当您单击“收藏此作者”按钮时,它会将作者ID发送到下面的函数,并将该值保存在DB中。

下面是我保存值的代码FAV_AUTHORS_META_KEY 在里面wp_usermeta 桌子

$user_id = fav_authors_get_user_id();
$fav_author_id = 2;
update_user_meta( $user_id, FAV_AUTHORS_META_KEY, $fav_author_id );
如果我有作者ID2, 它将保存在DB上。但是,当我发送不同的作者ID时,update_user_meta 将重写现有值,而不是添加新值。

如何使其保持现有价值并在其上添加新价值?

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

没有内置的附加元数据的功能,您需要手动添加。如果您计划添加多个值,我建议将其保存为数组,但它将在数据库中序列化,这将使其更难运行WP_Meta_Query 在…上

$user_id        = fav_authors_get_user_id();
$fav_author_id  = 2;
$author_list    = get_user_meta( $user_id, FAV_AUTHORS_META_KEY, true );

if( empty( $author_list ) ) {   // There was no meta_value, set an array.
    update_user_meta( $user_id, FAV_AUTHORS_META_KEY, array( $fav_author_id ) );
} else {
    $author_arr = ( is_array( $author_list ) ) ? $author_list : array( $author_list );  // Added in case current value is not an array already.
    $author_arr[] = $fav_author_id;
    update_user_meta( $user_id, FAV_AUTHORS_META_KEY, $author_arr );
}
我假设您当前使用的不是数组,所以我在else语句中添加了一个内联条件,以将任何单个值转换为数组。Note 你必须通过trueget_user_meta() 这样就可以取消阵列的序列化。

相关推荐

将选项添加到“Menus”编辑器的“Screen Options”部分

我正在开发一个向WordPress菜单编辑器添加自定义选项的系统,我想将其与屏幕选项面板集成。在我的研究中,我找不到任何关于修改现有屏幕选项菜单的内容;这可能吗?请参见下面的屏幕截图,以更好地了解我要实现的目标。外观>菜单上的默认“屏幕选项”:外观>菜单上的目标“屏幕选项”: