カスタムタブナビゲーションの登録

開発者は、ユーザーが新しいタブにアクセスできるようにナビゲーション要素を作成する必要があります。これは、タブキーとそのラベルの関連配列であるsite_health_navigation_tabsフィルターを使用して行います。

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

上記の例では、example-site-health-tabという識別子をMy New Tabというラベルと共に、サイトヘルス画面にあるヘッダーナビゲーションに追加します。

このフィルターを使用して、最初に表示されるタブの順序を変更したり、タブを削除したりすることも可能です。デフォルトでは、コアにはStatusInfoの2つのタブがあります。Status画面はデフォルトであり、したがってスラッグはありません。

ナビゲーションエリアを過負荷にしないために、4つ以上のアイテムが追加されると、最初の3つのみが直接表示され、残りのアイテムはサブナビゲーション内にラップされます。これは、ヘルスチェックプラグインでの使用テストに基づいており、4つのアイテムがほとんどのユースケースをカバーするのに十分であることが示されていますが、混乱を招くほど多くはありません。

カスタムタブのコンテンツの表示

ユーザーがデフォルト画面以外のサイトヘルスタブを訪れると、site_health_tab_contentアクションがトリガーされます。このアクションには、前のフィルターで定義されたタブナビゲーションによって定義されたスラッグという単一の引数が含まれており、開発者がどのページがリクエストされているかを特定するのに役立ちます。

アクションはヘッダー自体が読み込まれた後に発火しますが、ラッパーは含まれていません。これにより、開発者としては、画面の全幅(管理メニューを除く)を使用できます。

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

上記の例では、プラグインからタブコンテンツを含むファイルを読み込みますが、これはタブが前の例で定義されたタブキー(またはスラッグ)と一致する場合のみです。

この方法で任意のタブに出力を提供することが可能であり、他のタブ(自分のタブではない)に対しても可能です。たとえば、相互にやり取りする場合です。

別の例として、スラッグがdebugであるデフォルトのInfoタブを拡張し、特定の情報をコピーするボタンを追加することが考えられます。これは、あなたのプラグインまたはテーマにのみ特有の情報です:

  1. <?php
  2. function wporg_add_button_to_site_health_info_tab( $tab ) {
  3. // Do nothing if this is not the "debug" tab.
  4. if ( 'debug' !== $tab ) {
  5. return;
  6. }
  7. ?>
  8. <button class="copy-my-plugin-info">
  9. <?php esc_html_e( 'Click to copy plugin info', 'text-domain' ); ?>
  10. </button>
  11. <?php
  12. }
  13. add_action( 'site_health_tab_content', 'wporg_add_button_to_site_health_info_tab' );