*/ class Alpha_Accounting_Info { /** * Current added Menu hook_suffix * * @since 1.0.0 * @access public * @var string $hook_suffix Store current added Menu hook_suffix. */ private $hook_suffix; /** * Empty Constructor */ private function __construct() {} /** * Gets an instance of this object. * Prevents duplicate instances which avoid artefacts and improves performance. * * @static * @access public * @since 1.0.0 * @return object */ public static function instance() { // Store the instance locally to avoid private static replication. static $instance = null; // Only run these methods if they haven't been ran previously. if ( null === $instance ) { $instance = new self(); } // Always return the instance. return $instance; } /** * Initialize the class. * * @access public * @return void */ public function run() { add_action( 'admin_menu', array( $this, 'add_theme_menu' ) ); add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_resources' ) ); } /** * Add Theme Page Menu page. * * @access public * * @since 1.0.0 */ public function add_theme_menu() { $this->hook_suffix[] = add_theme_page( esc_html__( 'Alpha Accounting Info', 'alpha-accounting' ), esc_html__( 'Alpha Accounting Info', 'alpha-accounting' ), 'edit_theme_options', ALPHA_ACCOUNTING_THEME_NAME, array( $this, 'info_screen' ) ); } /** * Register the CSS/JavaScript Resources for the admin menu. * * @access public * Use Condition to Load it Only When it is Necessary * * @param string $hook_suffix The current admin page. * * @since 1.0.0 */ public function enqueue_resources( $hook_suffix ) { if ( ! is_array( $this->hook_suffix ) || ! in_array( $hook_suffix, $this->hook_suffix, true ) ) { return; } $unique_id = ALPHA_ACCOUNTING_THEME_NAME . '-info'; $version = ALPHA_ACCOUNTING_VERSION; /* Localize */ $localize = apply_filters( 'alpha_accounting_info_localize', array( 'version' => $version, 'nonce' => wp_create_nonce( 'wp_rest' ), 'rest_url' => get_rest_url(), ) ); wp_set_script_translations( $unique_id, ALPHA_ACCOUNTING_THEME_NAME ); wp_localize_script( $unique_id, 'TrendyFashionOutfitsLocalize', $localize ); } /** * Add menu page. * * @see templates/theme-info.php * * @access public * * @since 1.0.0 */ public function info_screen() { require_once 'page-theme-info.php'; } } /** * Return instance of Alpha_Accounting_Info class * * @since 1.0.0 * * @return Alpha_Accounting_Info */ function alpha_accounting_info() { //phpcs:ignore return Alpha_Accounting_Info::instance(); } alpha_accounting_info()->run();