如何使用delete_field()删除ACF关联字段数组中的指定值?
解决ACF关联字段删除指定值的问题
你用delete_field()的方式不对,这个函数的作用是删除整个字段的数据或者删除指定文章ID对应的字段值,它不能直接操作关联字段的数组元素。
你的代码错误在于:
- 把数组元素
$favori[$post_id]作为delete_field()的第二个参数,这个参数应该是文章ID,不是数组里的值 delete_field()不会修改你获取到的$favori数组,它是直接操作数据库里的字段数据
正确的做法是先获取关联字段的数组,移除目标值后再用update_field()把修改后的数组存回去:
$target_value = 2; // 要移除的目标值 $field_key = "field_63121dbf467be"; // 获取当前关联字段的数组 $favori = get_field($field_key); // 确保是数组且目标值存在,再执行移除操作 if (is_array($favori) && in_array($target_value, $favori)) { // 移除数组中的目标值 $favori = array_diff($favori, [$target_value]); // 将修改后的数组重新保存到字段中 update_field($field_key, $favori); }
说明:
array_diff()会返回一个新数组,包含原数组中不在目标值数组里的元素,适合用来移除单个值- 如果你需要移除多个值,可以把
[$target_value]换成包含多个值的数组,比如[2,4]
内容的提问来源于stack exchange,提问作者Fxmly92
相关产品推荐
相关产品推荐

