=== Slim Mobile Theme Switcher === Contributors: sethsm Tags: mobile, theme switcher, device theme, responsive, mobile theme Requires at least: 5.8 Tested up to: 7.0 Stable tag: 1.1.0 Requires PHP: 7.4 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Donate link: https://www.paypal.com/donate/?hosted_button_id=M3B2Q94PGVVWL Plugin URI: https://www.sethcreates.com/plugins-for-wordpress/slim-mobile-theme-switcher/ Author URI: https://www.sethcreates.com/plugins-for-wordpress/ Serve a lightweight mobile theme to phones while keeping desktops on your primary theme. Includes dedicated tablet routing. == Description == Ever wanted to serve a dedicated theme to visitors on handheld devices instead of a theme that is fine-tuned for big screen traffic? Slim Mobile Theme Switcher is a highly optimized, lightweight plugin designed for websites that need to serve a different theme to mobile devices while preserving the primary desktop experience. Instead of relying on clunky, resource-heavy device detection libraries, this plugin uses streamlined, modern user-agent detection to instantly route users to the correct theme before the page even loads. == Key Features == * **Three-way Theme Routing:** Serve up to three different themes simultaneously. Set one theme for Mobile Phones, one for Desktops, and optionally enable a dedicated theme specifically for Tablets (iPads/Android tablets). * **True Mobile Detection:** Uses refined regex to separate small-screen phones from tablets (iPads/Android tablets). * **Zero-Friction Setup:** Select your themes from a simple dropdown menu. No coding required. * **Manual Overrides:** Allow users to manually switch between views using `?theme=handheld` or `?theme=active` or `?theme=tablet`. * **Persistent Choice:** Activating the 'Remember Visitor’s Choice' option ensures that when a user has manually selected a different theme, this preference is saved for 30 days via cookies. * **No Bloat:** Zero front-end CSS or JS added by the plugin itself. * **Developer Friendly:** Built by a developer for developers. == Installation == 1. Upload the `slim-mobile-theme-switcher` folder to the `/wp-content/plugins/` directory. 2. Activate the plugin through the 'Plugins' menu in WordPress. 3. Go to **Settings > Slim Mobile Theme Switcher** to select your mobile and desktop themes. == Frequently Asked Questions == = How do I manually force a specific theme? = You can append query strings to your URLs to allow users to switch themes manually. * Mobile Theme: `yoursite.com/?theme=handheld` * Tablet Theme: `yoursite.com/?theme=tablet` * Desktop Theme: `yoursite.com/?theme=active` = How do I add a "View Full Site" link? = You can add a link to your mobile theme's footer: `View Full Site` = How do I link to the mobile version manually? = Simply add `?theme=handheld` to any URL on your site. To go back to the default/desktop view, use `?theme=active`. = What should I configure in my caching plugin? = For best results, exclude the `theme` query parameter from your cache. If your host supports it, enable "Vary by User-Agent" or "Mobile Caching". = Why isn't my theme switching? = The most common cause is **Page Caching**. If your host (like WP Engine or Kinsta) or a plugin (like WP Rocket) caches the desktop version of a page, it may serve that cached HTML to mobile users regardless of this plugin. Please ensure "Mobile Caching" or "User-Agent Vary" is enabled in your caching setup. = What should I configure in my caching plugin? = For best results, exclude the `theme` query parameter from your cache. If your host supports it, enable "Vary by User-Agent" or "Mobile Caching". == Screenshots == 1. The settings page where you can choose your mobile and desktop themes. == Changelog == = 1.1.0 = * **Feature:** Added dedicated Tablet Theme routing. You can now serve unique themes to Mobile, Tablet, and Desktop users independently. * **Feature:** Added a persistent cookie (30 days) to remember a visitor's manual theme override choice. * **Tweak:** Completely overhauled the mobile detection logic for better accuracy across modern devices. * **DEV:** Tested Up To WordPress 7.0. = 1.0.0 = * Initial release. == Upgrade Notice == = 1.0.0 = * Initial release.