网站健康

从 WordPress 5.8 开始,允许开发人员扩展站点健康屏幕。此 API 允许开发人员将自己的选项卡添加到站点运行状况界面。

注册自定义选项卡导航

开发人员需要从创建导航元素开始,以便用户可以访问新选项卡。这是使用 site_health_navigation_tabs 过滤器完成的,过滤器是一组关联的 Tab 键及其标签。

<?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,如上一个过滤器中的选项卡导航所定义,以帮助开发人员识别正在请求的页面。

该操作在标头本身加载后触发,但不包含任何包装器。作为开发人员,这为您提供了整个屏幕宽度(不包括管理菜单)。

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