返回

如何通过 REST API v3 轻松更新 ACF 字段?

php

通过 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 字段,从而使自定义字段的管理更加灵活和高效。

常见问题解答

  1. 为什么无法通过 API 更新 ACF 字段?

    • 这是因为使用的更新回调函数 update_ACF_fields() 未使用正确的 ACF 函数 update_field()
  2. 如何修复此问题?

    • 更新回调函数,使用 update_field() 函数和正确的参数。
  3. ACF 是什么?

    • ACF 是一种 WordPress 插件,用于创建和管理自定义字段。
  4. REST API 是什么?

    • REST API 是一个应用程序编程接口 (API),允许与 WordPress 网站进行交互。
  5. 我如何知道更新是否成功?

    • 你可以在代码中使用 var_dump() 函数来查看更新后的字段值。