1

我在 metauser 表中有数据,如下所示。如您所见,数据是序列化数组的形式。如何推送数组数据?我想将帖子 ID 保存在元书签中。但是,如果我add_user_meta()改用它,它会在新行中创建数据,而不是在值中添加数据(因此 1 个用户中将有 2 个具有不同值的元书签)。如果我使用update_user_meta()它只是替换旧的新值,而不是添加(推送)数组数据。如何将新数据(数组)添加到元值?

wordpress 中的表用户元

就像下面的示例图片一样,这是与 WordPress 类似的插件的元post_status数据comment_status。我认为当有新帖子或新评论时,值也会根据关联的id增加。

[wordpress2中插件ulike中的表ulike_meta

如果有不正确或不合适的词,请自由编辑此问题。

谢谢你!

4

2 回答 2

1

您可以使用get_user_meta函数来获取价值。

$post_status = get_user_meta( $user_id, 'post_status', true );

$post_status现在根据您的要求修改数组。并在它之后更新。

update_user_meta( $user_id, 'post_status', $post_status );

记住 WordPress 使用maybe_serializemaybe_unserialize从元表中保存和获取价值。

于 2021-04-16T17:01:47.263 回答
0

要将数组作为用户元数据存储在 Wordpress 数据库中,您可以使用 PHPserialize()函数。在此示例中,将为当前用户存储一个数组(如您的屏幕截图所示)。

$bookmark = array(
    0 => 3058,
);
update_user_meta( get_current_user_id(), '_bookmark_article', serialize($bookmark) );

要修改序列化数组,您可以使用 PHPunserialize()函数。在此示例中,_bookmark_article将检索、修改和更新用户元数据:

// retrieves the value of the user meta "_bookmark_article"
$bookmark_article = get_user_meta( get_current_user_id(), '_bookmark_article', true );
// convert value to array
$bookmark_article = unserialize( $bookmark_article );

// adds a value to the array
$bookmark_article_updated = $bookmark_article_array[] = 3445;
// updates an array value based on the key
$bookmark_article_updated = $bookmark_article_array[0] += 50;

// updates the value of the user meta "_bookmark_article"
update_user_meta( get_current_user_id(), '_bookmark_article', serialize($bookmark_article_updated) );
于 2021-04-18T21:52:56.937 回答