wpmind/includes/Admin/AdminBoot.php
2026-02-07 04:27:30 +08:00

75 lines
1.5 KiB
PHP

<?php
/**
* Admin bootstrapping.
*
* @package WPMind\Admin
* @since 3.3.0
*/
declare(strict_types=1);
namespace WPMind\Admin;
/**
* Class AdminBoot
*/
final class AdminBoot {
/**
* Singleton instance.
*
* @var AdminBoot|null
*/
private static ?AdminBoot $instance = null;
/**
* Whether hooks are registered.
*
* @var bool
*/
private bool $initialized = false;
/**
* Get singleton instance.
*
* @return AdminBoot
*/
public static function instance(): AdminBoot {
if ( null === self::$instance ) {
self::$instance = new self();
}
return self::$instance;
}
/**
* Constructor.
*/
private function __construct() {}
/**
* Register admin hooks.
*/
public function init(): void {
if ( $this->initialized ) {
return;
}
$assets = AdminAssets::instance();
$page = AdminPage::instance();
$ajax = AjaxController::instance();
add_action( 'admin_menu', [ $page, 'add_admin_menu' ] );
add_action( 'admin_init', [ $page, 'register_settings' ] );
add_action( 'admin_enqueue_scripts', [ $assets, 'enqueue_admin_assets' ] );
$ajax->register_hooks();
add_filter(
'plugin_action_links_' . plugin_basename( WPMIND_PLUGIN_FILE ),
[ $page, 'plugin_action_links' ]
);
add_filter( 'plugin_row_meta', [ $page, 'plugin_row_meta' ], 10, 2 );
$this->initialized = true;
}
}