' . esc_html__('Ledgerbridge Sync', 'ledgerbridge-sync') . ' ' . esc_html__('requires WooCommerce to be active.', 'ledgerbridge-sync') . '

'; }); return; } // Auto-run schema upgrades on existing installs (e.g. a site updating // from an older version) without requiring deactivate/reactivate. if (get_option('qbws_db_version') !== QBWS_DB_Installer::DB_VERSION) { QBWS_DB_Installer::install(); } // REST routes for the Intuit webhook endpoint (/wp-json/qbws/v1/webhook) QBWS_REST_API::init(); // WP-Cron hooks for polling / retry / historical batches QBWS_Cron::init(); // Outbound hooks: WooCommerce entity events → QB push queue. Each // init() checks its own woo_to_qb sync-matrix toggle before attaching // any hooks, so a disabled direction costs nothing at runtime. QBWS_Sync_Orders_Outbound::init(); QBWS_Sync_Customers::init(); QBWS_Sync_Products::init(); QBWS_Sync_Payments::init(); if (is_admin()) { QBWS_Admin::init(); } }); // ─── Plugins-list row links (the "Docs | API docs | Community support" // row WooCommerce shows under its own entry) ──────────────────────────── add_filter('plugin_row_meta', function (array $links, string $file): array { if ($file !== plugin_basename(QBWS_PLUGIN_FILE)) { return $links; } $links[] = '' . esc_html__('View details', 'ledgerbridge-sync') . ''; $links[] = '' . esc_html__('API docs', 'ledgerbridge-sync') . ''; $links[] = '' . esc_html__('Support', 'ledgerbridge-sync') . ''; return $links; }, 10, 2);