如何实现WordPress REST API读取ACF选项页字段的Endpoint
实现方案
ACF 选项页的字段默认存储在 WordPress 系统的 wp_options 数据表中,无需区分前端/后台运行环境,在 WordPress 正常初始化的场景下都可以直接读取,以下是不依赖第三方插件的实现步骤:
1. 注册自定义REST接口
使用 WordPress 原生的 rest_api_init 钩子注册专属的Endpoint,无需额外插件支持:
add_action( 'rest_api_init', function () { // 接口访问地址为:你的站点域名/wp-json/custom/v1/acf_option register_rest_route( 'custom/v1', '/acf_option', array( 'methods' => 'GET', 'callback' => 'get_custom_acf_option', // 公开访问可保留__return_true,敏感数据需自行修改权限逻辑 'permission_callback' => '__return_true', ) ); } );
2. 实现字段读取回调逻辑
支持两种读取方式,可根据你的需求选择:
function get_custom_acf_option( $request ) { // 替换为你实际需要读取的ACF选项页字段名 $target_field = 'your_field_name'; // 方式1:使用ACF原生函数读取,会自动处理字段的格式化逻辑,推荐使用 $field_value = get_field( $target_field, 'option' ); // 方式2:不依赖ACF函数直接读取数据表,兼容性更强 // $field_value = get_option( 'options_' . $target_field ); if ( empty( $field_value ) ) { return new WP_Error( 'no_content', '目标字段无有效内容', array( 'status' => 404 ) ); } // WordPress REST接口会自动将返回值转为JSON格式并设置正确响应头 return [ 'code' => 200, 'field_name' => $target_field, 'field_value' => $field_value ]; }
注意事项
- 上述代码可直接放置在你开发的插件主文件,或当前主题的
functions.php中即可生效 - 若你自定义了ACF选项页的专属slug,可先到数据库
wp_options表中搜索option_name字段匹配%你的目标字段名%,确认实际存储的键名后再调整读取逻辑 - 若字段涉及敏感数据,请勿直接设置
permission_callback为__return_true,可改为仅管理员可访问的逻辑,示例如下:
'permission_callback' => function () { // 仅拥有后台管理权限的用户可访问接口 return current_user_can( 'manage_options' ); }
内容的提问来源于stack exchange,提问作者xDE4DSH0Tx
相关产品推荐
相关产品推荐

