我正在尝试使用update_user_meta更新数据库中的元值。如果将true传递给函数,则不会更新元值,但是如果使用false,它将更新。那么两者之间有什么区别?
update_user_meta(1, 'event_year', '8', true);
update_user_meta(1, 'event_year', '8', false);
答案 0 :(得分:0)
对最后一个参数的描述不是您要遵循的正确方法。
就像
//changes 'true' to '8'
update_user_meta(1, 'event_year', '8', true);
第3个参数将替换为第4个参数,因此在您的情况下,将第8个参数替换为true
此功能有4个参数:
$user_id : The user id.
$meta_key : Metadata name to be updated.
$meta_value : Metadata new value.
$prev_value :previous value of metadata. It is optional so if supplied, only metadata with that value will be updated otherwise all metadata with supplied $meta_key will be updated.
答案 1 :(得分:0)
好的,参考https://codex.wordpress.org/Function_Reference/update_user_meta,我们可以说第四参数定义了
> Previous __value__ to check before removing.
请参见,已选中价值。因此,在更新您的event_year
字段wp
之前,请检查此字段是否存储此定义的值。您说-存储的值为true
。我不太确定如何在查询文本中转换 true ,但是可能在将其传递给查询文本wp
之后无法确认删除的值是否与 true 相同。 。这就是为什么更新不会发生。
如果使用false
(并且false
与第四个参数的默认值-''
(空字符串)相同),您告诉wp
-无需检查在这里,只要值更改就更新。
答案 2 :(得分:0)
$ prev_value =>可选。如果指定,则仅使用指定的值更新现有的元数据条目。否则,更新所有条目。
update_user_meta()
中继到update_metadata()
,这里有https://core.trac.wordpress.org/browser/tags/5.2.1/src/wp-includes/meta.php第151行