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

用WP REST API设置ACF

章绪
2023-03-14

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

高级自定义字段PRO WP REST API ACF to REST API

我创建了一个名为“自定义导航”的自定义帖子类型。我有一个自定义字段组(通过ACF ),称为“自定义导航项目”,它只在文章类型是自定义导航时应用。该组中的字段称为“图像”和“标题”,我无法获得它们的值。

这是我为ACF to REST API插件设置菜单和添加过滤器的地方。这些按预期工作。

function custom_setup() {
    // This theme uses wp_nav_menu() in two locations.
    register_nav_menus( array(
        'topnav'    => 'Top Menu',
        'footer-left-nav' => 'Footer Top Menu 1',
        'footer-center-left-nav' => 'Footer Top Menu 2',
        'footer-center-right-nav' => 'Footer Top Menu 3',
        'footer-right-nav' => 'Footer Top Menu 4',
        'footer-bottom-left-nav' => 'Footer Bottom Menu 1',
        'footer-bottom-right-nav' => 'Footer Bottom Menu 2',
    ) );

    // Enable the option show in rest
    add_filter( 'acf/rest_api/field_settings/show_in_rest', '__return_true' );

    // Enable the option edit in rest
    add_filter( 'acf/rest_api/field_settings/edit_in_rest', '__return_true' );
}

add_action( 'after_setup_theme', ‘custom_setup' );

这个函数将我的自定义post类型菜单项设置为WP REST API。就这样做来说,这是按计划进行的。然而,这些post类型菜单项的ACF字段不发送

function wp_api_v2_custom_get_menu_data ($data) {

    if ( ( $locations = get_nav_menu_locations() ) && isset( $locations[ $data['id'] ] ) ) {
    $menu = wp_get_nav_menu_object( $locations[$data['id']] );
    $menuItems = wp_get_nav_menu_items($menu->term_id);

    return $menuItems;
    } else {
        return array();
    }
}

add_action( 'rest_api_init', function () {
    register_rest_route( 'menus/v1', '/menus/(?P<id>[a-zA-Z(-]+)', array(
        'methods' => 'GET',
        'callback' => 'wp_api_v2_custom_get_menu_data',
    ) );
} );

这是我的函数,用于设置我的自定义帖子类型

function custom_nav_post_type() {
    register_post_type(‘custom_nav',
        array (
            'name'             => ‘Custom Navigation',
            'singular_name'        => 'CustomNav',
            'can_export'        => TRUE,
            'exclude_from_search'    => FALSE,
            'has_archive'        => TRUE,
            'hierarchical'        => TRUE,
            'label'            => 'Custom Navigation',
            'menu_position'        => 5,
            'public'            => TRUE,
            'publicly_queryable'    => TRUE,
            'query_var'        => ‘customnav',
            'rewrite'            => array ( 'slug' => 'shop' ),
            'show_ui'        => TRUE,
            'show_in_menu'    => TRUE,
            'show_in_nav_menus'    => TRUE,
            'show_in_rest'        => TRUE,
            'rest_base'        => 'shop',
                'rest_controller_class'    => 'WP_REST_Posts_Controller',
            'supports'        => array ('title')
        )
    );
}
add_action( 'init', 'custom_nav_post_type' );
?>

所有这些的输出

[
{
    "id":184,
    "acf":[

    ]
},
{
    "id":183,
    "acf":[

    ]
},
{
    "id":182,
    "acf":[

    ]
},
{
    "id":181,
    "acf":[

    ]
},
{
    "id":180,
    "acf":[

    ]
},
{
    "id":176,
    "acf":[

    ]
}
]

任何关于我哪里出错的建议将不胜感激。

共有1个答案

仰翔
2023-03-14

下面是我如何解决它的。我在“custom_setup”函数中添加了自定义帖子类型的过滤器。

add_filter('rest_prepare_custom_nav', function($response) {
     $response->data['acf'] = get_fields($response->data['id']);
     return $response;
});

所以过滤器是一个通配符过滤器,应用于

apply_filter("rest_prepare_YOUR-CUSTOM-POST-TYPE-NAME-HERE", ...
 类似资料:
  • 小行星开场 小行星开场是 krpano 1.19 pr3+ 默认皮肤带有的功能,默认关闭。 想开启小行星也很简单,可以找到tour.xml,然后搜索littleplanetintro将其值设置为true即可。 <skin_settings ... littleplanetintro="true" ... /> 更详细的设置可以在skin/vtourskin.xml文件中修

  • 问题内容: 当您想使用Javascript更改HTML时,如何知道何时使用以下任一方法? 问题答案: 设置通常用于输入/表单元素。通常用于div,span,td和类似元素。

  • 问题内容: 当我跑步时 在Mac上(Mac OS X 10.6.5,Python 2.6.1),我得到以下结果。 它们分为5类。 /Library/Python/2.6/site-packages/*.egg /Library/Python/2.6/site-packages 框架/Python.framework/版本/2.6/lib/python2.6 框架/Python.framework/

  • 问题内容: 如何使用jQuery设置和取消设置Cookie,例如创建一个名为的Cookie 并将其值设置为? 问题答案: 2019年4月更新 Cookie的读取/操作不需要jQuery,因此请不要使用下面的原始答案。 转到https://github.com/js-cookie/js-cookie,然后在其中使用不依赖jQuery的库。 基本示例: 有关详细信息,请参见github上的文档。 参见

  • 使用指南 - 统计设置 - 其它设置 为您详细介绍百度统计所支持的各种设置功能及使用方法,比如设置排除规则、设置跨域、添加指定广告追踪、设置转化目标等。 其它设置 如何关闭数据采集 数据导出服务及其开通方法 统计图标如何设置 什么是统计图标

  • 使用指南 - 统计设置 - 转化设置 为您详细介绍百度统计所支持的各种设置功能及使用方法,比如设置排除规则、设置跨域、添加指定广告追踪、设置转化目标等。 转化设置 什么是转化及统计支持的转化类型 什么是页面转化 什么是转化路径 转化路径如何设置 什么是事件转化 如何查看事件ID 如何设置事件转化 Trackevent方式设置事件转化 如何查看转化数据 页数转化 时长转化 什么是转化收益 什么是长效