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

WP-restapi中带有自定义post类型的嵌套ACF-JSON数据

宫亦
2023-03-14

我使用以下插件从WordPress REST API获取JSON数据:

  • 高级自定义字段PRO(5.3.7)
  • WP REST API(2.0-beta13)
  • ACF到REST API(2.2.0)
  • 自定义文章类型UI(1.3.4)

我有一个自定义的帖子类型“案例研究”,是用自定义的帖子类型UI插件创建的。我有一个名为“案例研究”的自定义字段组(通过ACF),它仅在文章类型为案例研究时应用。

我还有一个名为Home的自定义字段组,它应用于Home page。其中一个领域是“特色案例研究”。字段类型是发布对象,“按发布类型筛选”设置为案例研究。

所以现在我编辑我的主页,我可以使用特色案例研究选择框将案例研究对象附加到主页。

通过WP-restapi插件,我能够以JSON数据的形式获取主页,ACF部分通过ACF-to-restapi插件提供。我可以看到ACF为主页提供的所有字段。

案例研究自定义帖子类型的“在REST API中显示”设置也设置为True,因此我为主页选择的案例研究也是JSON数据的一部分。

到目前为止,一切顺利。

问题是所选案例研究的ACF数据不在主页JSON数据中。case study post对象显示为默认的WordPress字段(尽管是JSON),但不显示ACF数据。

我能够通过RESTAPI自己获得所选的案例研究,并且所有需要的字段都是可见的。只有当该对象附加到主页时,我才能看到它的ACF字段。

有没有办法获取附加到另一个ACF字段的自定义帖子类型的ACF数据?

共有3个答案

曾元忠
2023-03-14

我在最后一个版本(v3)中改变了get_fields的参数,我删除了$响应和$对象,现在我们只有这些参数:$data和$ask。


    $data     mixed( array, WP_REST_Request )
    $request  mixed( WP_REST_Request, NULL )
    
      
 
  
       $response mixed( WP_REST_Response, NULL )
      
 
    
      
 
  
       $object   mixed ( WP_Post, WP_Term, WP_User, NULL )
      
 

如何使用:

add_filter( 'acf/rest_api/{type}/get_fields', function( $data ) {
    if ( isset( $data['acf']['featured_work'] ) ) {
        $data['acf']['featured_work'] = get_fields( $data['acf']['featured_work'] );
    }

    return $data;
} );

通配符{type}可以是:post | page | user | comment | attachment | custom post type | taxonomy

梅逸清
2023-03-14
add_filter( 'json_prepare_post', function ($data, $post, $context) {
    $data['acf'] = get_fields($post['ID']);
    return $data;
}, 10, 3 );
岳鸿畴
2023-03-14

通过查看Github问题,我们找到了答案。我需要在我的主题中为functions.php添加一个特殊的过滤器。非直观和笨重,但它的工作。

add_filter( 'acf/rest_api/page/get_fields', function( $data, $request, $response ) {
    if ( $response instanceof WP_REST_Response ) {
        $data = $response->get_data();
    }
    if( isset($data['acf']) && isset($data['acf']['featured_work']) ) {
        $data['acf']['featured_work'] = get_fields($data['acf']['featured_work']);
    }
    return $data;
}, 10, 3);
 类似资料:
  • 我正在设置一个endpoint,我想用它来更新自定义帖子类型中的ACF字段。 在这里,我注册了字段endpoint和回调 在邮递员中发送此请求:http://localhost:32851/wp-json/responsify/v1/assign_external_writer?写入器=32272 如果我使用“title=my_new_title”而不是writer,它会正确更新。但是使用 ACF

  • 搜索很好,它在工作,我正在过滤的交易类型(出售或出租)和房间数量在每个房地产。 但是我的JSON响应缺少很多字段,包括ACF。例如:{ “id”:149,“post_author”:“2”,“post_date”:“2016-03-03 23:53:39”,“post_date_gmt”:“2016-03-03 23:53:39”,“post_content”:“”post_title“:”opo

  • 我有一个应用程序,可以通过http获取和发布关系数据库模型。我可以显示我的数据,JSON数据在http://localhost/**/api/投诉: 使用角度: 我还可以使用此控制器进行http post: 但是当我将清单[0]添加到我的表单以添加它时,它不会添加新记录。我的表单添加新记录的代码如下所示: 我的console.log输出: 安慰日志 有人能告诉我是否可以使用角度http显示它吗。获

  • 我试图使用高级自定义字段发布对象字段仅显示自定义文章类型的父页面。然后我使用高级窗体在前端显示窗体。问题是,我似乎无法弄清楚如何只显示自定义帖子类型的父页面。 目前,它正在前端输出所有帖子、页面和自定义帖子类型页面:!https://i.ibb.co/tXkxFdY/Screen-Shot-2019-04-01-at-2-50-25-PM.png 作为参考,以下是我在ACF Pro插件中如何设置后

  • 这是我的JSON示例: 这是我的POJO类: 但是我不知道我应该为< code>productConverter写些什么。< br >另一方面,< code>Product类中的字段有多种类型。< code >字符串和< code >整数。< br >我看了这些:https://github . com/green robot/green Dao/blob/v 3 . 1 . 1/examples

  • TL;DR:如何选择一个WP REST API自定义endpoint的响应的每一点信息? 长版 如果我想使用WP REST API构建自定义endpoint - 从不同的帖子类型发送特定帖子数据 - 按照手册中的示例,我得到了这个: 但是get_post()函数没有返回一些数据,如果您希望在页面中显示帖子,这些数据是非常有用的(例如类别id、特色图片)。那么,我如何构建一个自定义endpoint来