自 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' );