=== AjaxPress - Single Page Application, Ajax Navigation & Persistent Media Player === Contributors: arraystory Tags: ajax, performance, speed, single page application, persistent player Requires at least: 5.3 Tested up to: 7.0 Stable tag: 2.4.1 Requires PHP: 7.1 License: GPLv3 License URI: https://www.gnu.org/licenses/gpl-3.0.html Ajax navigation that turns your site into a single page application. Instant page loads, smooth transitions, audio/video that never stops. == Description == **A true Single Page Application (SPA) plugin - no coding, no configuration.** Stop losing visitors to slow page loads. AjaxPress replaces full page reloads with instant ajax navigation, giving your site a blazing-fast, app-like experience that keeps users engaged and coming back. 👉 **[Unlock Pro Features](https://arraystory.com/ajaxpress/)** - Advanced features & priority support **💨 Instant page loads.** Visitors get zero-delay page transitions with smooth navigation - no white screens, no waiting, no frustration. Lower bounce rates, longer sessions. **🎵 Audio and video never stop.** Live streams, podcasts, and music keep playing seamlessly while users browse. A game-changer for radio stations, podcast networks, and music platforms. [youtube https://www.youtube.com/watch?v=Sq0b3PVJJfs] = How It Works = AjaxPress intercepts internal link clicks and loads the next page over ajax instead of a full browser reload. Real URLs are preserved via the History API, the page title and head metadata (canonical, OpenGraph, JSON-LD) are synced on every navigation, and back/forward buttons work exactly as expected. Search engines crawl your site normally - nothing changes for SEO. = Compatible With Your Theme, Page Builder, and Plugins = AjaxPress is built for maximum compatibility and actively tested with the most popular themes, page builders, and plugins. Just activate - no configuration needed. 🎨 **Themes:** Astra, GeneratePress, Kadence, OceanWP, Hello Elementor, Blocksy, Neve, Divi, Avada, Flatsome, Storefront, and more. 🔧 **Page Builders:** Elementor, Bricks, Beaver Builder, Divi Builder, WPBakery, Oxygen, Breakdance, Zion Builder, Spectra, Gutenberg, and more. 📝 **Forms:** Contact Form 7, WPForms, Gravity Forms, Formidable Forms, Ninja Forms, Fluent Forms, Elementor Forms, and more. ⚡ **Caching:** WP Rocket, LiteSpeed Cache, W3 Total Cache, WP Super Cache, SG Optimizer, Cloudflare, Bunny CDN, and more. 🔍 **SEO:** Yoast SEO, Rank Math, All in One SEO, SEOPress, and more. 🛒 **eCommerce:** Full WooCommerce compatibility including products, cart, checkout, and extensions. Also works with Easy Digital Downloads, and more. ⚛️ **Modern JS Frameworks:** React, Vue, Solid, Alpine.js pages work perfectly. No style breaking, no script conflicts. 🌐 **Browsers & Devices:** Chrome, Firefox, Safari, Edge, Opera. Desktop, tablet, mobile. All modern browsers supported. = Single Page Application Features = ⚡ **Ajax Navigation** - True app-like UX that keeps visitors engaged 🎵 **Persistent Audio/Video Player** - Media continues playing across your entire site. Free for any player you can mark up (see the FAQ); the Pro settings screen lets you point at a player with any CSS selector instead 🏃 **Instant Page Loading** - Zero refresh, zero lag, pure speed 👆 **Smart Prefetch** (Pro) - Pages preload on hover, before visitors even click ✨ **Page Transitions** - Fade, slide, and custom animations for polish 📊 **Progress Bar** - Visual loading indicator that reassures visitors 🔌 **Broad Compatibility** - Tested with popular themes, builders, and plugins 🔐 **SEO Friendly** - Real URLs, synced metadata, search engines crawl normally 💪 **Mobile Optimized** - Works great on desktop, tablet, and mobile 🔥 **Want more?** [Go Pro](https://arraystory.com/ajaxpress/) - Advanced features and priority support = Built for Radio, Podcast, Music, and Content Sites = 📻 **Radio Stations & Live Streaming** - Never interrupt your listeners' experience 🎙️ **Podcast Networks** - Seamless episode navigation with uninterrupted playback 🎵 **Music & Artist Portfolios** - Showcase your sound without a single pause 🛍️ **eCommerce Stores** - Lightning-fast product browsing that converts browsers to buyers 📰 **News & Publishing** - Instant article switching for addicted readers 🖼️ **Creative Portfolios** - Silky-smooth project navigation that wows clients 🎬 **Video Platforms** - Continuous streaming across your entire catalog = SEO Friendly = 🔗 Real URLs via History API 📝 Meta tags update per page 🕷️ Search engines crawl normally ✅ Works with Yoast, Rank Math, AIOSEO 📈 Google Analytics compatible = AjaxPress Pro = **Take your site to the next level.** The free version is powerful - AjaxPress Pro unlocks advanced features and priority support for sites that need more. **[👉 See AjaxPress Pro Plans & Pricing](https://arraystory.com/ajaxpress/)** = Source Code = The JavaScript that runs on your site is minified for size. The unminified source it is built from ships inside the plugin, under `src/`, along with the Vite configs and `package.json` needed to rebuild it. `src/frontend/` builds `public/js/ajaxpress.min.js` and `src/admin/` builds `public/js/admin.min.js`, both with [Vite](https://vitejs.dev/). From the plugin folder: `npm install` `npx vite build --config ./src/frontend/vite.config.js` `npx vite build --config ./src/admin/vite.config.js` = Privacy & External Services = AjaxPress does not send anything anywhere on its own. Nothing below runs unless you turn it on or connect it, and none of it touches your visitors: no data from your site's frontend is ever collected. **PackEdge** (diagnostics, licensing and feedback) Optionally, and **only with your explicit consent**, AjaxPress can share non-confidential diagnostic data (such as PHP and WordPress version and plugin settings) with `api.packedge.dev` so we can reproduce and fix issues faster. You can review exactly what is shared and opt out at any time. PackEdge also handles Pro license activation. See the [PackEdge site](https://packedge.dev) and [privacy policy](https://packedge.dev/privacy/). **Cloudflare** (edge caching, optional) If you connect a Cloudflare account on the Cache screen, AjaxPress talks to the Cloudflare API at `api.cloudflare.com` on your behalf to read zones and manage caching rules for your site. Nothing is sent to Cloudflare until you connect. See the [Cloudflare privacy policy](https://www.cloudflare.com/privacypolicy/) and [terms](https://www.cloudflare.com/terms/). If you use the one-click "Connect with Cloudflare" option, the authorization step passes through an OAuth relay we operate at `ajaxpress-oauth.astory.workers.dev`. The relay exists so the OAuth client secret never has to ship inside the plugin. It exchanges the authorization code for a token and hands it back to your site; the token is stored encrypted in your database. You can skip the relay entirely by pasting your own Cloudflare API token instead, which never leaves your server except to Cloudflare. **Deactivation feedback** (optional) If you fill in the short form shown when deactivating AjaxPress, the reason, your comment and your site URL are sent to `arraystory.com`. Submitting the form is entirely optional, and no username or personal account data is included. Closing the dialog sends nothing. == Installation == **Get started in 3 steps:** 1. Go to **Plugins > Add New** 2. Search for **AjaxPress** 3. Click **Install Now**, then **Activate** - your site transforms instantly ⚡ **That's it.** Your site is now a lightning-fast SPA. Optional: Visit **Settings > AjaxPress** for customization options, or upgrade to [Pro for advanced features](https://arraystory.com/ajaxpress/). == Frequently Asked Questions == = Will it work with my theme? = Yes. AjaxPress is tested with Astra, GeneratePress, Kadence, Divi, Avada, OceanWP, Blocksy, Neve, Flatsome, Storefront, and many more. No configuration needed. = Will it work with my page builder? = Yes. Elementor, Bricks, Beaver Builder, Divi Builder, WPBakery, Oxygen, Breakdance, and Gutenberg are all tested and supported. = Will my forms work? = Yes. Contact Form 7, WPForms, Gravity Forms, Formidable Forms, Ninja Forms, Fluent Forms, and Elementor Forms all work out of the box. = Will my audio/video keep playing during navigation? = Yes - that's AjaxPress's signature feature. Your media player continues uninterrupted while visitors browse your entire site. AjaxPress recognises a player it should keep alive in any of these ways, all of which work in the free version. Add whichever is easiest to the element wrapping your player: * `data-ajaxpress-persist` on the element, for example `
` * the class `ajaxpress-persist` * an id starting with `persistent-`, for example `
` * `data-persist` on an `