自 WordPress 5.8 起,开发者可以扩展“站点健康”屏幕。此 API 允许开发者向站点健康界面添加自己的标签页。

站点健康

注册自定义标签页导航

开发者首先需要创建一个导航元素,以便用户可以访问新标签页。这是通过使用 site_health_navigation_tabs 过滤器完成的,该过滤器是一个关联数组,包含标签键及其标签。

<?php
function wporg_example_site_health_navigation_tabs( $tabs ) {
    // translators: Tab heading for Site Health navigation.
    $tabs['example-site-health-tab'] = esc_html_x( 'My New Tab', 'Site Health', 'text-domain' );
 
    return $tabs;
}
add_filter( 'site_health_navigation_tabs', 'wporg_example_site_health_navigation_tabs' );

上述示例将在位于站点健康屏幕中的标题导航中添加标识符 example-site-health-tab 和标签 My New Tab。

也可以使用此过滤器重新排序首先显示的标签页,甚至删除标签页。默认情况下,核心有两个标签页:Status 和 Info 屏幕。Status 屏幕是默认设置,因此没有 slug。

为了避免导航区域过载,如果添加了超过 4 个项目,则只显示前三个,其余项目将包裹在子导航中。这是基于在 Health Check 插件中的使用测试,其中 4 个项目已证明足以覆盖大多数用例,但不会多到令人困惑。

显示自定义标签页的内容

当用户访问除默认屏幕之外的站点健康标签页时,会触发 site_health_tab_content 操作。此操作包含一个参数,即由上一个过滤器中标签导航定义的 slug,以帮助开发者识别正在请求哪个页面。

该操作在加载标题本身之后触发,但不包含任何包装器。这给予开发者整个屏幕的宽度(不包括 admin 菜单)进行操作。

<?php
function wporg_example_site_health_tab_content( $tab ) {
    // Do nothing if this is not our tab.
    if ( 'example-site-health-tab' !== $tab ) {
        return;
    }
 
    // Include the interface, kept in a separate file just to differentiate code from views.
    include trailingslashit( plugin_dir_path( __FILE__ ) ) . 'views/site-health-tab.php';
}
add_action( 'site_health_tab_content', 'wporg_example_site_health_tab_content' );

上述示例从您的插件中加载包含您标签页内容的文件,但仅当标签页匹配上一个示例中定义的标签键(或称为 slug)时才加载。

可以通过这种方式在任何标签页上提供输出,或者在非自己拥有的其他标签页上提供输出,例如当它们相互交互时。

另一个示例可能是扩展默认的 Info 标签页,其 slug 为 debug,并添加一个按钮来复制仅针对您插件或主题的特定信息:

<?php
function wporg_add_button_to_site_health_info_tab( $tab ) {
    // Do nothing if this is not the "debug" tab.
    if ( 'debug' !== $tab ) {
        return;
    }
    ?>
    <button class="copy-my-plugin-info">
        <?php esc_html_e( 'Click to copy plugin info', 'text-domain' ); ?>
    </button>
    <?php
}
add_action( 'site_health_tab_content', 'wporg_add_button_to_site_health_info_tab' );