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

如何在页面和自定义postypes中将所有ACF字段公开给Wordpress REST API

洪富
2023-03-14

我想向WordPress REST API公开所有属于页面或自定义帖子类型的ACF字段,以便通过javascript进行一些API调用。

最终的预期结果将是您可以轻松访问的 ACF 对象内的所有 ACF 字段。

共有3个答案

贲绪
2023-03-14

您可以使用以下插件在 REST 中公开 ACF 字段。

https://wordpress.org/plugins/acf-to-rest-api/

如果您的ACF字段具有关系,并且希望在rest中也包含这些关系,则可以使用以下插件。

https://github.com/airesvsg/acf-to-rest-api-recursive

蒯卓君
2023-03-14

通过以下代码,您将能够在wordpress REST API中公开<code>页面

显然,您可以定制要在数组中排除或包含的postypes:< code > $ postypes _ to _ exclude 和< code > $ extra _ postypes _ to _ include 。

function create_ACF_meta_in_REST() {
    $postypes_to_exclude = ['acf-field-group','acf-field'];
    $extra_postypes_to_include = ["page"];
    $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',
            'schema'          => null,
       ]
     );
    }

}

function expose_ACF_fields( $object ) {
    $ID = $object['id'];
    return get_fields($ID);
}

add_action( 'rest_api_init', 'create_ACF_meta_in_REST' );

以下是参考要点:https://gist.github.com/MelMacaluso/6c4cb3db5ac87894f66a456ab8615f10

曹臻
2023-03-14

另一个简单的解决方案现在非常适合我。您可以在functions.phpfields.php上添加以下功能,在发送Rest请求之前使用ACFgetFields。您可以将其添加到任何特殊页面rest_prepare_pagerest_prepare_post

ACF数据将在json响应中使用keyacf

// add this to functions.php
//register acf fields to Wordpress API
//https://support.advancedcustomfields.com/forums/topic/json-rest-api-and-acf/

function acf_to_rest_api($response, $post, $request) {
    if (!function_exists('get_fields')) return $response;

    if (isset($post)) {
        $acf = get_fields($post->id);
        $response->data['acf'] = $acf;
    }
    return $response;
}
add_filter('rest_prepare_post', 'acf_to_rest_api', 10, 3);
 类似资料:
  • 我在wordpress网站中使用高级自定义字段。我创建了一个在帖子中使用的自定义字段。然后我为主页创建了一个自定义字段(关系字段),以便我可以从中选择帖子。当我为我的主页进行api调用时,我看到了带来帖子的acf,但我看不到帖子中使用的acf。如何公开所有字段以将其与api一起使用?应该是这样的 我看不到嵌套的acf(我不知道它实际上是否应该这样,但你明白了)。提前谢谢。

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

  • Wordpress木材ACF Pro。内部函数。php中,我有一个动作,每当发布一篇文章(类型为week)时就会触发。 我想从这篇文章中获取数据,并使用它为每个用户创建一个新的帖子。 我让它在某种程度上起作用。发布帖子时,我获取标题和用户名,并将其用作新创建帖子的标题。 但是,我在尝试提取ACF数据时遇到了问题-例如:week_commencing日期字段。所有ACF数据都返回NULL(我知道字段

  • 我为我的自定义帖子“服务”设置了一个ACF字段,其中有“特色服务”复选框和“特色url”字段的ACF字段。如果用户检查该字段,这意味着它是一个特色服务,他可以填写特色url字段,它在单个页面上工作正常,但我需要在主页上调用它,以在主页上显示我的特色服务。我在主页上的代码如下: 如何获取主页上的“特色url”字段?

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

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