当前位置: 首页 > 知识库问答 >
问题:

自定义REST APIendpoint中的输出ACF字段选择

赵高雅
2023-03-14

我正在尝试为WP REST API创建一个自定义endpoint,该endpoint应包含某些ACF字段及其创建的选项,以防该字段是选择字段。

这是我在functions.php中尝试的代码:

function test_get_acf() {
    $field = get_field_object('credits');
    $credits = array();
    if( $field['choices'] ) {
        foreach( $field['choices'] as $value => $label ) {
            array_push($credits, $value);
        }
    }
    $items = array(
        'credits' => $credits
    );
    return $items;
  }

这是创建endpoint的函数:

  function test_register_api_endpoints() {
    register_rest_route( 'test/v2', '/acf', array(
      'methods' => 'GET',
      'callback' => 'test_get_acf',
    ) );
  }

  add_action( 'rest_api_init', 'test_register_api_endpoints' );

但是,这样做我会得到以下JSON输出:

[
   "credits": [ ]
]

所以显然是不行的。我做错了什么?

共有1个答案

丁俊智
2023-03-14

问题是ACF找不到你要的字段,根据get_field_object()留档,它还需要一个默认为当前post id的post_id参数,为了只获取字段对象(在post上下文之外),你应该像这样使用field键:

$field = get_field_object('field_5e380cf7b4bf0');

在这种情况下,field_5e380cf7b4bf0是您领域的关键。如果您必须使用此方法,并且还需要动态检索密钥,则此处有一个说明,说明如何按其名称获取字段密钥。

或者将示例帖子ID传递给它:

global $wp_query;
$field = get_field_object('credits', $wp_query->posts[0]->ID); // Or just pass a number like 1 if you are sure that a post with that id exists

注意:如果您刚刚创建了一个字段,并且还没有任何帖子使用它,当您调用get_field_object()时,它也可能导致false

 类似资料:
  • 我在Wordpress中有一个名为“svg”的ACF字段菜单 为了创建我的菜单,我这样做: 我像这样显示我的菜单: 在我的Foreach中,我试图从我的菜单中调用我的ACF字段,如下所示: 但它不起作用(空)。我迷路了。如何获取我的 ACF 字段? 真是太感谢你了

  • 我有一个前端ACF表单-ACF_表单()。使用post对象字段。我想通过自定义字段限制查询结果。下面的代码可以正常工作,除了当我尝试在搜索栏中键入时,会出现以下错误:我得到的错误是ajax响应中的PHP错误; 0:“PhpConsole\Handler”- 1:"strpos()" 2:"acf_order_by_search()" 3:“acf_field_post_object- 4:“acf

  • 我正在使用ACF插件来管理一个WooCommerce网站内的各种自定义元数据。我试图设置的功能之一是向WooCommerce结帐页面添加自定义字段。我遵循WC文档页面上概述的一般概念,它允许您通过woocommerce_after_order_notes钩子将自定义表单追加到WC结帐表单。从那里,我使用acf_form()函数输入acf表单,表单设置为false,以允许它不包含acf表单元素(即a

  • 我为woocommerce产品“coffee_type”创建了自定义分类法。我为此分类法创建了一个ACF图像字段“coffee\u type\u image”。 我想在产品页面上显示带有链接的图像,而不是分类法的名称。我在这里读了大多数关于在分类法上显示acf图像的文章,但每一篇都是关于使用归档分类法页面而不是产品页面。我正在编辑single-product.php(确切地content-sing

  • 我想在WooCommerce结帐页面中添加自定义字段,但用于选定的产品。 例如,如果客户的购物车中只有产品A,则此自定义字段应显示在WooCommerce签出页面中 我在函数中使用以下代码。php添加自定义字段:

  • 我有一个自定义后类型设置称为艺术家。每个单个艺术家是一个页面(艺术家个人资料,如果你愿意),有一个通过高级自定义字段(ACF)的关系字段类型与该艺术家相关联的产品列表。我需要产品在艺术家页面上显示在他们的类别中。因此,在Elementor中,我需要指定一个查询筛选器ID,以简单地将产品划分为类别。 到目前为止我所尝试的 我试图通过自定义查询仅显示列表中特定类别的产品,因为我需要生成查询ID。 我一