title: "自定义医生诊断检查" post_status: publish comment_status: open taxonomy: category: - wp-cli-handbook post_tag: - Doctor - Guides - Repos


自定义医生诊断检查

尽管 wp doctor 自带一系列默认诊断检查,但其核心设计具备可扩展性。检查在运行时定义,通过读取 doctor.yml 配置文件来指定每个检查及其选项。

doctor.yml 格式

让我们看看包含的 doctor.yml 文件中的前两项检查:

autoload-options-size:
  check: Autoload_Options_Size
constant-savequeries-falsy:
  check: Constant_Definition
  options:
    constant: SAVEQUERIES
    falsy: true

在这个例子中:

为了完整性,也值得注意 Autoload_Options_Size 接受 'threshold_kb' 作为一个可选的配置选项。'threshold_kb' 的默认值是 900,因此不需要包含在 doctor.yml 中。

自定义 doctor.yml 配置文件

通过创建 doctor.yml 并使用 wp doctor check --config=doctor.yml 来运行您自己的医生检查。通过创建单独的 prod.yml 和 dev.yml 文件,为不同环境使用不同的配置。

如果您希望自定义文件扩展现有的医生配置,可以使用神奇的 _ 配置文件选项来定义要继承的配置文件。'default' 是对捆绑的 doctor.yml 的神奇引用;您也可以指定完整的文件路径。

请看这个示例:

_:
  inherit: default
  skipped_checks:
    - autoload-options-size
constant-disallow-file-mods-falsy:
  check: Constant_Definition
  options:
    constant: DISALLOW_FILE_MODS
    falsy: true
plugin-akismet-active
  check: Plugin_Status
  options:
    plugin: akismet
    status: active
plugin-akismet-valid-api-key:
  class: Akismet_Valid_API_Key
  require: akismet-valid-api-key.php

这个自定义的 doctor.yml 文件:

可用检查类型

部分 wp doctor 检查类型是可配置的,意味着可以更改默认设置;而其他检查类型经过抽象化处理,使其可重复使用。例如,Autoload_Options_Size 检查接受 'threshold_kb' 选项,而 Plugin_Status 接受 'plugin' 和 'status' 作为选项。

可配置的检查类型包括:

抽象化的检查类型包括:

当然,部分检查类型不需要配置选项:

您可以通过扩展 runcommand\Doctor\Checks\Check 类来编写自定义检查类型。