altTextService = $altTextService; $this->bulkActionHandler = $bulkActionHandler; $this->lifecycle = $lifecycle; $this->mediaLibrary = $mediaLibrary; $this->pluginFile = $pluginFile; } /** * Register all WordPress hooks. * * @return void */ public function register(): void { // Register admin pages PluginOptions::register(); $this->mediaLibrary->register(); // Plugin lifecycle hooks register_activation_hook($this->pluginFile, [$this->lifecycle, 'activate']); register_deactivation_hook($this->pluginFile, [$this->lifecycle, 'deactivate']); // Auto-generate alt text on image upload add_action('add_attachment', [$this, 'addAltText']); // Load translations add_action('plugins_loaded', [$this, 'loadTextDomain']); // Add settings link in plugins page add_filter( 'plugin_action_links_auto-alt-text/auto-alt-text.php', [$this, 'addSettingsLink'] ); // Bulk actions add_filter('bulk_actions-upload', [$this->bulkActionHandler, 'getBulkActions']); add_action('load-upload.php', [$this->bulkActionHandler, 'handleBulkAction']); add_action('admin_notices', [$this->bulkActionHandler, 'displayAdminNotice']); } /** * Generate and save alt text for a newly uploaded attachment. * * @param int $attachmentId The attachment post ID * @return void */ public function addAltText(int $attachmentId): void { $altText = $this->altTextService->generateForAttachment($attachmentId); if (!empty($altText)) { update_post_meta($attachmentId, '_wp_attachment_image_alt', $altText); } } /** * Load plugin text domain for translations. * * @return void */ public function loadTextDomain(): void { load_plugin_textdomain('auto-alt-text', false, AATXT_LANGUAGES_RELATIVE_PATH); } /** * Add settings link to the plugin actions in the plugins list. * * @param array $links Existing plugin action links * @return array Modified plugin action links */ public function addSettingsLink(array $links): array { $url = esc_url(add_query_arg( 'page', 'auto-alt-text-options', get_admin_url() . 'admin.php' )); $settingsLink = '' . esc_html__('Settings', 'auto-alt-text') . ''; $links[] = $settingsLink; return $links; } }