wordpress - 在自定义 REST API 端点中输出 ACF 字段选择
问题描述
我正在尝试为 WP REST API 创建一个自定义端点,该端点应包含某些 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;
}
这是创建端点的函数:
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": [ ]
]
所以它显然不起作用。我究竟做错了什么?
解决方案
问题是 ACF 找不到您要求的字段,根据get_field_object() 文档,它还需要一个post_id
默认为当前帖子 ID 的参数,以便仅获取字段对象(在帖子上下文之外),您应该像这样使用字段键:
$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
注意:如果您刚刚创建了一个字段并且还没有任何帖子使用它,它也可能导致false
您调用时get_field_object()
推荐阅读
- python - 为什么我们在 python 中使用与命名元组的类型名称相同的变量名称?
- arrays - Jq - 从不同的键打印一行值
- git - Git Rebase 导致重复代码审查?
- python - 将 pickle 用于不和谐机器人时出错 | 不和谐.py
- google-apps-script - Google 幻灯片 API (Slides.Presentations) 未通过 Google Apps 脚本定义
- microk8s - 使用 kfp.Client python api 将管道提交到 microk8s.kubeflow
- c# - Mysql Server 在添加 ADO.net [ASP.net API] 时停止
- java - 通知中的Android条件PendingIntent?
- python - 如何在 python 中添加到运行总数?
- javascript - 格子链接与 Back4App 的集成