返回
如何通过 REST API v3 轻松更新 ACF 字段?
php
2024-03-17 08:32:20
通过 REST API v3 轻松更新 ACF 字段
引言
在电子商务网站中,自定义字段 (ACF) 至关重要,它能够通过 API 轻松获取,让产品页面上的字段清晰可见。然而,如果无法通过 API 更新它们,则说明代码中缺少关键步骤。
问题
问题在于当前的更新回调函数 update_ACF_fields()
使用不正确的 ACF 函数更新自定义字段。正确的函数是 update_field()
,它需要四个参数:字段键、字段新值、要更新字段的帖子 ID 和要执行更新的帖子类型。
解决方案
要修复此问题,我们需要更新回调函数以使用 update_field()
函数。更新后的代码如下:
function update_ACF_fields( $data, $object ) {
$ID = $object['id'];
foreach ( $data as $key => $value ) {
update_field( $key, $value, $ID );
}
return $data;
}
现在,代码将能够通过 REST API v3 轻松更新 ACF 字段。
完整代码
以下是完整的代码,其中包含修复后的更新回调函数:
function create_ACF_meta_in_REST() {
$postypes_to_exclude = ['acf-field-group','acf-field'];
$extra_postypes_to_include = ["post"];
$post_types = array_diff(get_post_types(["_builtin" => false], 'names'),$postypes_to_exclude);
array_push($post_types, $extra_postypes_to_include);
foreach ($post_types as $post_type) {
register_rest_field( $post_type, 'ACF', [
'get_callback' => 'expose_ACF_fields',
'update_callback' => 'update_ACF_fields',
'schema' => null,
]
);
}
}
function update_ACF_fields( $data, $object ) {
$ID = $object['id'];
foreach ( $data as $key => $value ) {
update_field( $key, $value, $ID );
}
return $data;
}
function expose_ACF_fields( $object ) {
$ID = $object['id'];
return get_fields( $ID );
}
add_action( 'rest_api_init', 'create_ACF_meta_in_REST' );
结论
通过遵循这些步骤,你可以通过 REST API v3 轻松更新 ACF 字段,从而使自定义字段的管理更加灵活和高效。
常见问题解答
-
为什么无法通过 API 更新 ACF 字段?
- 这是因为使用的更新回调函数
update_ACF_fields()
未使用正确的 ACF 函数update_field()
。
- 这是因为使用的更新回调函数
-
如何修复此问题?
- 更新回调函数,使用
update_field()
函数和正确的参数。
- 更新回调函数,使用
-
ACF 是什么?
- ACF 是一种 WordPress 插件,用于创建和管理自定义字段。
-
REST API 是什么?
- REST API 是一个应用程序编程接口 (API),允许与 WordPress 网站进行交互。
-
我如何知道更新是否成功?
- 你可以在代码中使用
var_dump()
函数来查看更新后的字段值。
- 你可以在代码中使用