Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

ACF prevents some REST responses

未关闭
#988 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
58/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
停滞
技术栈
php, wordpress
领域
api, backend

调研方向

定位 ACF_Rest_Api 类并跟踪其 rest_pre_dispatch 初始化回调,尤其是 rest_api_enabled 和 rest_api_embed_links 分支。使用提供的 filter 重现该行为,并验证在启用 ACF 时,优先级较低的自定义 WP_Error 响应仍然有效。

由索引模型根据 Issue 内容生成。

描述

Describe the bug

If another plugin uses the filter rest_pre_dispatch to make the REST API to return a custom response, ACF prevents it.

To Reproduce

  1. This code should stop any REST request:
add_filter(
	'rest_pre_dispatch',
	static function ( $response ) {
		return new WP_Error( 'oh_no', __( 'Oh no no no no no.' ), array( 'status' => 404 ) );
	},
	5 // Lower than 10.
);
  1. But with ACF enabled, it doesn't happen.

Code

class ACF_Rest_Api {
	// ...

	public function __construct() {
		add_filter( 'rest_pre_dispatch', array( $this, 'initialize' ), 10, 3 );
		add_action( 'rest_api_init', array( $this, 'register_field' ) );
	}

	public function initialize( $response, $handler, $request ) {
		if ( ! acf_get_setting( 'rest_api_enabled' ) ) {
			return; // Should return `$response`.
		}

		// ...
		if ( acf_get_setting( 'rest_api_embed_links' ) ) {
			$this->embed_links = new ACF_Rest_Embed_Links();
			$this->embed_links->initialize();
		}
		// Should return `$response`.
	}
	// ...
}

Version Information:

  • WordPress Version 6.9-beta3
  • PHP Version 8.0.29
  • ACF Version 6.6.2
  • "Browser" Insomnia 12
主要语言
PHP
星标
946
派生
197
PR 合并指标
30 天内没有已合并 PR

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

AdvancedCustomFields/acf 的其他 Issue

查看 AdvancedCustomFields/acf 的全部 Issue

相似的 Issue

更多 PHP Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。