0

目前正在开发 WordPress 插件,该插件已完成并准备好提交。但是,在使用 WordPresss 插件检查 (PCP) 进行插件检查期间,它会在警告如下:

PluginCheck.CodeAnalysis.SettingSanitization.register_settingDynamic Dynamic argument passed in third parameter of register_setting(). Please ensure proper sanitization.

但是,我的代码很干净并且符合 WordPress 规则:

register_setting(
    'ailpg_business_profile',
    'ailpg_contact_emails',
    array(
        'type' => 'string',
        'sanitize_callback' => [$this, 'sanitize_emails'],
        'default' => ''
    )
);

我正在使用正确的方法来注册类,sanitize_callback是一个类方法(例如,[$this, 'sanitize_api_key'])。

尽管进行了几次更改,但插件检查 (PCP) 不断触发警告错误。有人请检查并帮助或确认此警告是否是由于插件检查工具的已知问题而导致的误报。

 

撰写回答

无意义的回答将很快被删除,账号将被禁止发言。 提交回答

1 个回答

超哥
超哥
行业大佬
行业大佬
时间: 2025年04月29日

这是插件检查工具(PCP, Plugin Check Plugin)的误报,不是你的代码问题。

你的 register_setting() 写法是完全正确的:

register_setting(
    'ailpg_business_profile',
    'ailpg_contact_emails',
    array(
        'type' => 'string',
        'sanitize_callback' => [$this, 'sanitize_emails'],
        'default' => ''
    )
);

你的 sanitize_callback 使用了类方法 [$this, 'sanitize_emails'],这是 WordPress 官方允许的标准写法。

你的第三个参数是标准的 array 配置,不是恶意动态传参。

为什么还会被报?

插件检查器(PCP)内部检查逻辑比较保守,它只知道你传了一个“动态值”(比如用 $this 这种非明确字符串),就默认警告你一下。
它根本没去进一步判断你的 $this->sanitize_emails 其实是安全的。

所以实际上:

  • 你的代码安全。
  • 可以无视这个警告提交插件。

(WordPress.org 插件团队审核时不会因为这个就拒绝,只要你的 sanitize_callback 确实有效。)