init_components(); $this->init_hooks(); } /** * Initialize plugin components. * * @since 1.0.0 */ private function init_components() { // Admin components. if ( is_admin() ) { new Settings(); new MetaBox(); } // Frontend components. if ( ! is_admin() ) { new Restrictor(); } } /** * Initialize hooks. * * @since 1.0.0 */ private function init_hooks() { add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_assets' ) ); add_filter( 'plugin_action_links_' . LUMOCR_PLUGIN_BASENAME, array( $this, 'add_action_links' ) ); } /** * Enqueue admin assets. * * @since 1.0.0 * @param string $hook Current admin page hook. */ public function enqueue_admin_assets( $hook ) { // Load only on plugin pages and post edit pages. $plugin_pages = array( \Lumo_WP_Menu::get_hook_suffix( 'lumo-access-studio' ), 'admin_page_lumocr-welcome', 'post.php', 'post-new.php', ); if ( ! in_array( $hook, $plugin_pages, true ) ) { return; } // Enqueue CSS. wp_enqueue_style( 'lumocr-admin', LUMOCR_PLUGIN_URL . 'assets/css/admin.css', array(), LUMOCR_VERSION ); // Enqueue JS. wp_enqueue_script( 'lumocr-admin', LUMOCR_PLUGIN_URL . 'assets/js/admin.js', array( 'jquery', 'wp-util' ), LUMOCR_VERSION, true ); // Localize script. wp_localize_script( 'lumocr-admin', 'lumocrAdmin', array( 'ajaxUrl' => admin_url( 'admin-ajax.php' ), 'nonce' => wp_create_nonce( 'lumocr_admin_nonce' ), 'textDomain' => LUMOCR_TEXT_DOMAIN, 'i18n' => array( 'saved' => __( 'Settings saved successfully!', 'lumo-access-studio' ), 'error' => __( 'An error occurred. Please try again.', 'lumo-access-studio' ), 'loading' => __( 'Loading...', 'lumo-access-studio' ), ), ) ); } /** * Add plugin action links. * * @since 1.0.0 * @param array $links Existing action links. * @return array Modified action links. */ public function add_action_links( $links ) { $settings_link = sprintf( '%s', esc_url( admin_url( 'admin.php?page=lumo-access-studio' ) ), esc_html__( 'Settings', 'lumo-access-studio' ) ); array_unshift( $links, $settings_link ); return $links; } }