includes(); $this->init(); } /** * Load class files. * * @return void */ private function includes() { // Core / gating. require_once ARWC_PLUGIN_DIR . 'includes/class-arwc-license.php'; // Scoring engine. require_once ARWC_PLUGIN_DIR . 'includes/interface-arwc-check.php'; require_once ARWC_PLUGIN_DIR . 'includes/class-arwc-check-result.php'; require_once ARWC_PLUGIN_DIR . 'includes/abstract-arwc-check.php'; require_once ARWC_PLUGIN_DIR . 'includes/class-arwc-scorer.php'; require_once ARWC_PLUGIN_DIR . 'includes/class-arwc-scanner.php'; // Individual checks. require_once ARWC_PLUGIN_DIR . 'includes/checks/class-arwc-check-schema.php'; require_once ARWC_PLUGIN_DIR . 'includes/checks/class-arwc-check-attributes.php'; require_once ARWC_PLUGIN_DIR . 'includes/checks/class-arwc-check-identifiers.php'; require_once ARWC_PLUGIN_DIR . 'includes/checks/class-arwc-check-description.php'; require_once ARWC_PLUGIN_DIR . 'includes/checks/class-arwc-check-inventory.php'; // Fixer module: the write-side counterpart to the audit. require_once ARWC_PLUGIN_DIR . 'modules/class-arwc-openrouter.php'; require_once ARWC_PLUGIN_DIR . 'modules/fixes/interface-arwc-fix.php'; require_once ARWC_PLUGIN_DIR . 'modules/fixes/class-arwc-fix-result.php'; require_once ARWC_PLUGIN_DIR . 'modules/fixes/abstract-arwc-fix.php'; require_once ARWC_PLUGIN_DIR . 'modules/fixes/class-arwc-fix-schema.php'; require_once ARWC_PLUGIN_DIR . 'modules/fixes/class-arwc-fix-content.php'; require_once ARWC_PLUGIN_DIR . 'modules/fixes/class-arwc-fix-attributes.php'; require_once ARWC_PLUGIN_DIR . 'modules/fixes/class-arwc-fix-identifiers.php'; require_once ARWC_PLUGIN_DIR . 'modules/fixes/class-arwc-fix-description-ai.php'; require_once ARWC_PLUGIN_DIR . 'modules/fixes/class-arwc-fix-attributes-ai.php'; require_once ARWC_PLUGIN_DIR . 'modules/class-arwc-fixer.php'; // Site-level agent access (AI-crawler robots rules + product-aware llms.txt). require_once ARWC_PLUGIN_DIR . 'modules/class-arwc-agent-access.php'; // V2 extension-point stub (still a seam; not wired to UI yet). require_once ARWC_PLUGIN_DIR . 'modules/class-arwc-order-tracking.php'; // Admin UI. if ( is_admin() ) { require_once ARWC_PLUGIN_DIR . 'admin/class-arwc-admin.php'; require_once ARWC_PLUGIN_DIR . 'admin/class-arwc-review-notice.php'; require_once ARWC_PLUGIN_DIR . 'admin/class-arwc-onboarding.php'; require_once ARWC_PLUGIN_DIR . 'admin/class-arwc-product-metabox.php'; require_once ARWC_PLUGIN_DIR . 'admin/class-arwc-product-column.php'; } } /** * Instantiate services and register hooks. * * @return void */ private function init() { $this->license = new ARWC_License(); $this->scorer = new ARWC_Scorer( $this->license ); $this->scanner = new ARWC_Scanner( $this->scorer ); // Boot the fixer and the agent-order tracking module. $this->fixer = ARWC_Fixer::instance( $this->license ); $this->order_tracking = ARWC_Order_Tracking::instance( $this->license ); // Boot site-level agent access (front-end robots.txt + /llms.txt). ARWC_Agent_Access::instance( $this->license ); if ( is_admin() ) { new ARWC_Admin( $this->scanner, $this->scorer, $this->license, $this->fixer, $this->order_tracking ); new ARWC_Review_Notice(); // First-run setup wizard + the per-product agent-readiness meta box + // the score column on the Products list table. new ARWC_Onboarding(); new ARWC_Product_Metabox( $this->scorer, $this->scanner ); new ARWC_Product_Column( $this->scorer ); } // Translations for plugins hosted on WordPress.org are loaded // automatically since WordPress 4.6, so no load_plugin_textdomain() call // is needed here. } /** * Accessor for the scorer. * * @return ARWC_Scorer */ public function scorer() { return $this->scorer; } /** * Accessor for the scanner. * * @return ARWC_Scanner */ public function scanner() { return $this->scanner; } /** * Accessor for the license gate. * * @return ARWC_License */ public function license() { return $this->license; } /** * Accessor for the fixer. * * @return ARWC_Fixer */ public function fixer() { return $this->fixer; } /** * Accessor for the agent-order tracking module. * * @return ARWC_Order_Tracking */ public function order_tracking() { return $this->order_tracking; } }