【发布时间】:2016-07-03 19:38:48
【问题描述】:
我有一个名为“sales”的自定义元密钥,它包含销售人员进行的所有销售的信息以及一个标志,表明它是否已获得授权、等待授权或是否已被拒绝。
Wordpress 将每个销售保存为 usermeta 表中的单独行,我对更新特定销售状态没有问题;即将其从待处理 (2) 更改为已拒绝 (0) 或已批准 (1)。
我已经尝试了一些方法来执行此操作,遵循其他论坛等上的建议,但似乎我可能首先错误地存储了元数据,因为所有示例都很有趣,每个自定义 meta_key 每个只有一行用户;所以帖子建议更新值,删除与键关联的所有数据,然后上传修改后的数组。
我目前有以下代码,但它没有像我想象的那样工作,因为它将数据保存到另一个数组中,因此变得更加嵌套。
if(isset($_POST['approved'])) {
$saleStatus = 2;
switch ($_POST['approved']) {
case 'approve':
$saleStatus = 1;
break;
case 'reject':
$saleStatus = 0;
break;
}
$sales = get_user_meta($_POST['repID'], 'sales');
foreach ($sales as $key => $sale) {
if($sale['reg'] === $_POST['carReg']) {
$sales[$key]['approved'] = $saleStatus;
}
}
update_user_meta( $_POST['repID'], 'sales', $sales);
}
更新
$sales = get_user_meta($_POST['repID'], 'sales');
foreach ($sales as $key => $sale) {
$old_sale_data = $sale;
if($sale['reg'] === $_POST['carReg']) {
$sale['approved'] = $saleStatus;
update_user_meta( $_POST['repID'], 'sales', $sale, $old_sale_data);
}
}
【问题讨论】:
-
使用 $sales['approved'] = $saleStatus; $sales[$key]['approved'] = $saleStatus;
-
根据this answer 使用更新后的代码来实现这一点我已经在此处更新了代码,以明确答案。感谢您的建议。
标签: php wordpress metadata updating