loader = $loader; $this->adminPage = $adminPage; $this->assets = $assets; $this->movieDetailsPresenter = $movieDetailsPresenter; $this->foodNutritionPresenter = $foodNutritionPresenter; $this->registerHooks(); } public function register(): void { $this->loader->run(); } private function registerHooks(): void { $this->loader->addAction('init', $this, 'registerPluginCapabilities'); $this->loader->addAction('admin_menu', $this->adminPage, 'registerMenu'); $this->loader->addAction('admin_enqueue_scripts', $this->assets, 'enqueueAdminAssets'); $this->loader->addAction('manage_posts_extra_tablenav', $this->adminPage, 'renderWooCommerceProductsShortcut'); $this->loader->addAction('edit_form_top', $this->adminPage, 'renderWooCommerceEditorShortcut'); $this->loader->addFilter('woocommerce_product_tabs', new \TFGraphics\SmartImport\WooCommerce\DomainDetailsPresenter(), 'addProductTab'); $this->loader->addFilter('woocommerce_product_tabs', new \TFGraphics\SmartImport\WooCommerce\BookDetailsPresenter(), 'addProductTab'); $this->loader->addFilter('woocommerce_product_tabs', $this->movieDetailsPresenter, 'addProductTab'); $this->loader->addFilter('woocommerce_display_product_attributes', $this->movieDetailsPresenter, 'filterProductAttributes', 10, 2); $this->loader->addFilter('woocommerce_product_tabs', $this->foodNutritionPresenter, 'addProductTab'); } public function registerPluginCapabilities(): void { // Register custom post types, taxonomies and REST endpoints in the future. } }