=== 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.3.3
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
🏃 **Instant Page Loading** - Zero refresh, zero lag, pure speed
👆 **Smart Prefetch** - 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/)**

= Privacy & External Services =

AjaxPress respects your privacy. The plugin works fully without sending any data anywhere.

Optionally - and **only with your explicit consent** - AjaxPress can share non-confidential diagnostic data (such as PHP/WordPress version and plugin settings) via [PackEdge](https://packedge.dev) to help us reproduce and fix issues faster. You can review exactly what is shared and opt out at any time. See the [PackEdge privacy policy](https://packedge.dev/privacy/) for details.

PackEdge is also used for license activation (Pro) and an optional deactivation-feedback form. No visitor data from your site's frontend is ever collected.

== 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.

= Does it work with caching plugins? =

Yes. WP Rocket, LiteSpeed Cache, W3 Total Cache, WP Super Cache, SG Optimizer, Cloudflare, and Bunny CDN are all supported.

= Will it break my SEO? =

No. AjaxPress uses real URLs via the History API and syncs meta tags, canonical tags, and JSON-LD structured data on every navigation. Search engines crawl your site normally. Works with Yoast, Rank Math, and all major SEO plugins.

= Does it work with React/Vue/Solid pages? =

Yes. Pages built with modern JS frameworks work without style breaking or script conflicts. No configuration needed.

= Does it work on mobile? =

Yes. All modern browsers on all devices - desktop, tablet, and mobile - are fully supported.

== Screenshots ==

1. Navigation settings - control how ajax navigation behaves across your site
2. Loader styles - pick the loading indicator that matches your brand
3. Cursor behaviours - subtle cues that make navigation feel instant
4. Transitions and page content animations - fade, slide, and custom effects
5. Preserve Elements - keep audio/video players playing across every page

== Changelog ==

For full changelog, see [changelog.txt](https://plugins.svn.wordpress.org/ajaxpress/trunk/changelog.txt)

= 2.3.3 =
* New: Cloudflare cache integration — purge and manage Cloudflare edge cache directly from the AjaxPress settings panel
* Fixed: Duplicate browser-history entries. Each navigation now adds exactly one entry and the back button no longer traps visitors in a loop
* Fixed: Back/forward navigation that hits a server redirect no longer creates unwanted forward entries
* Fixed: The `ajaxpress:ready` event now fires after the URL and title are updated, so analytics listeners read the correct page
* New: `ajaxpress_page_view` dataLayer event for Google Analytics 4 / Tag Manager, with page_location, page_title, and measured engagement_time_msec so GA4 engagement metrics keep working on SPA navigation
* New: `ajaxpress-loading` and `ajaxpress-complete` events are now emitted as documented
* Fixed: Ctrl/Cmd+click and Shift+click on links now open a new tab or window instead of navigating in place
* Fixed: `target="_blank"` is matched case-insensitively, and a site-wide `<base target>` is honored
* Fixed: Links with a `download` attribute are no longer intercepted by SPA navigation
* Fixed: Elements opted into persistence no longer appear twice in the page shell
* Fixed: No more doubled audio with persistent media players. The previous page is fully unloaded after navigation and the hidden original player copy is removed once lifted
* Fixed: Premium settings (Media Players, Exclude Links, loader customizations) are no longer erased when a license check fails or the plugin is re-activated
* Fixed: A temporary license-server outage no longer deactivates your license. Only a definitive invalid-key response does
* Security: The license key is no longer printed in the public page source. The frontend now receives only a validity flag

= 2.3.2 =
* New: Rebuilt licensing and activation - faster, more reliable license validation and a smoother activation flow
* New: Send feedback directly from the Help page, with a quick happy / neutral / unhappy rating
* New: Rating prompt to share your experience, plus a one-click way to leave a review
* New: Optional diagnostic sharing via [PackEdge](https://packedge.dev) (only non-confidential data, only with your consent) so we can reproduce and fix issues faster. See our [privacy policy](https://packedge.dev/privacy/) for details.
* Improved: Deactivation now asks for a quick, optional reason to help us improve the plugin
* Changed: Minimum required PHP is now 7.1
* Changed: Tested up to WordPress 7.0

= 2.3.1 =
* Fixed: JSON-LD structured data (Yoast, Rank Math, SEOPress, etc.) is now replaced cleanly on every navigation, resolving duplicated BreadcrumbList and "Missing field 'item'" errors in Google Search Console
* Fixed: Canonical, OpenGraph, and Twitter Card meta tags now sync to the parent shell on every nav, so social previews and search engines see the page being viewed instead of the initial-load URL
* Fixed: Iframe sub-document is now flagged noindex,nofollow so JS-rendering crawlers do not double-index the same URL twice
* Fixed: External links with target="_blank" now open in a new tab instead of replacing the current page
* Fixed: Persistent player no longer briefly duplicates on Mobile Safari during scroll-and-hold gestures
* Fixed: Persistent elements with sticky child widgets (Elementor) are now properly hidden in the iframe source
* New: Persistent media (audio, video, radio widgets) is lifted into the parent shell and keeps playing without reload across all navigation
* New: `ajaxpress:ready` event for re-initializing external scripts after AJAX navigation

== Upgrade Notice ==

= 2.3.3 =
Adds Cloudflare cache management directly from the settings panel. Also fixes doubled audio with persistent players, duplicate back-button history entries, premium settings being lost on license hiccups, and adds a GA4 `ajaxpress_page_view` event for correct analytics on SPA navigation.

= 2.3.2 =
Major reliability release with improved licensing, feedback system, optional diagnostic sharing to help us fix bugs faster, and support for PHP 7.1+. [See pricing & plans](https://arraystory.com/ajaxpress/).

= 2.3.1 =
Critical SEO and stability release. Fixes JSON-LD duplication, syncs canonical/social-share meta tags, prevents iframe double-indexing, restores `target="_blank"` external links, and adds `ajaxpress:ready` event for script re-initialization.
