'Settings', 'icon' => 'Settings', 'description' => 'License, branding, and network settings.', 'custom_panel' => 'SettingsPanel', ); } /** * The container owns no settings — each tab persists through the * module it embeds. Empty schema so the base class doesn't register * generic settings routes. */ public function settings_schema(): array { return array(); } public function cli_commands(): array { return array( array( 'name' => 'xspeed settings', 'callback' => array( $this, 'cli_handler' ), 'shortdesc' => 'Show which Settings tabs are available (License / Branding / Multisite).', 'synopsis' => array(), ), ); } public function cli_handler( array $args, array $assoc ): void { $tabs = array( 'license' => 'License', 'white-label' => 'Branding', 'multisite' => 'Multisite', ); foreach ( $tabs as $slug => $label ) { $present = \XSpeed\Module_Registry::has( $slug ) ? 'available' : 'locked'; \WP_CLI::log( sprintf( '%-14s %-14s %s', $slug, $present, $label ) ); } } }