{"id":278086,"date":"2026-02-10T11:17:28","date_gmt":"2026-02-10T11:17:28","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/multi-theme-switcher\/"},"modified":"2026-02-23T09:05:00","modified_gmt":"2026-02-23T09:05:00","slug":"osom-multi-theme-switcher","status":"publish","type":"plugin","link":"https:\/\/es-cr.wordpress.org\/plugins\/osom-multi-theme-switcher\/","author":23444295,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.2.2","stable_tag":"1.2.2","tested":"6.9.4","requires":"5.0","requires_php":"7.0","requires_plugins":null,"header_name":"Osom Multi Theme Switcher","header_author":"OsomStudio, bartnovak, tomzielinski, Gudis24, rainkom","header_description":"Allows you to use different themes for specific pages, posts, or URLs while keeping a main theme active.","assets_banners_color":"","last_updated":"2026-02-23 09:05:00","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/osomstudio\/osom-multi-theme-switcher","header_author_uri":"https:\/\/osomstudio.com","rating":0,"author_block_rating":0,"active_installs":10,"downloads":290,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.2":{"tag":"1.0.2","author":"osomstudio","date":"2026-02-10 11:18:17"},"1.0.3":{"tag":"1.0.3","author":"osomstudio","date":"2026-02-15 13:27:51"},"1.2.1":{"tag":"1.2.1","author":"osomstudio","date":"2026-02-19 12:59:08"},"1.2.2":{"tag":"1.2.2","author":"osomstudio","date":"2026-02-23 09:05:00"}},"upgrade_notice":{"1.0.0":"<p>Initial release of Osom Multi Theme Switcher.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3457914,"resolution":"128x128","location":"assets","locale":""}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.2","1.0.3","1.2.1","1.2.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3461831,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3461831,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3461831,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3461831,"resolution":"4","location":"assets","locale":""}},"screenshots":{"1":"Admin settings page - Add new theme rules and manage existing ones","2":"Rule type selection - Choose from pages, posts, post types, URLs, categories, or tags","3":"Admin bar theme switcher - Quickly switch themes in the WordPress dashboard","4":"Side-by-side comparison of themes before\/after theme switch"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[255910,171085,255560,11085,65849],"plugin_category":[],"plugin_contributors":[128780,255564,255562,255565,255563],"plugin_business_model":[],"class_list":["post-278086","plugin","type-plugin","status-publish","hentry","plugin_tags-landing-page-theme","plugin_tags-multiple-themes","plugin_tags-theme-per-page","plugin_tags-theme-switcher","plugin_tags-woocommerce-theme","plugin_contributors-bartosznowak","plugin_contributors-kamiljanq","plugin_contributors-osomstudio","plugin_contributors-rainkom","plugin_contributors-tomziel","plugin_committers-osomstudio"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/osom-multi-theme-switcher\/assets\/icon-128x128.png?rev=3457914","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/osom-multi-theme-switcher\/assets\/screenshot-1.png?rev=3461831","caption":"Admin settings page - Add new theme rules and manage existing ones"},{"src":"https:\/\/ps.w.org\/osom-multi-theme-switcher\/assets\/screenshot-2.png?rev=3461831","caption":"Rule type selection - Choose from pages, posts, post types, URLs, categories, or tags"},{"src":"https:\/\/ps.w.org\/osom-multi-theme-switcher\/assets\/screenshot-3.png?rev=3461831","caption":"Admin bar theme switcher - Quickly switch themes in the WordPress dashboard"},{"src":"https:\/\/ps.w.org\/osom-multi-theme-switcher\/assets\/screenshot-4.png?rev=3461831","caption":"Side-by-side comparison of themes before\/after theme switch"}],"raw_content":"<!--section=description-->\n<p>Osom Multi Theme Switcher lets you run multiple WordPress themes on a single site \u2014 assigning different themes to specific pages, posts, post types, categories, tags, or custom URLs.<\/p>\n\n<p>Built by <a href=\"https:\/\/www.osomstudio.com\">Osom Studio<\/a>, a WordPress &amp; WooCommerce agency with 10+ years of experience managing complex multi-theme setups for clients.<\/p>\n\n<p>We built this plugin because we kept solving the same problem for clients: one WordPress installation, multiple designs. Landing pages that need a completely different look. A WooCommerce store that runs a separate theme from the corporate site. A membership area with its own design system.<\/p>\n\n<p>Instead of hacking theme conditionals into functions.php every time, we packaged our solution into a plugin.<\/p>\n\n<h4>When you need this<\/h4>\n\n<ul>\n<li><strong>Landing pages<\/strong> with a unique design \u2014 without touching your main theme<\/li>\n<li><strong>WooCommerce stores<\/strong> running a dedicated shop theme alongside a corporate theme<\/li>\n<li><strong>Membership or gated sections<\/strong> with a separate visual identity<\/li>\n<li><strong>Theme testing<\/strong> \u2014 preview a new theme on specific pages before switching site-wide<\/li>\n<li><strong>Agencies managing multi-brand WordPress installations<\/strong> from a single dashboard<\/li>\n<\/ul>\n\n<h4>Key features<\/h4>\n\n<ul>\n<li><strong>Flexible rules<\/strong> \u2014 assign themes by page, post, post type, custom URL, category, or tag<\/li>\n<li><strong>Full theme loading<\/strong> \u2014 the alternative theme's functions.php loads completely, so page builders (Elementor, Divi, Beaver Builder) and custom functionality work as expected<\/li>\n<li><strong>Admin theme switcher<\/strong> \u2014 access settings for any installed theme directly from the admin bar<\/li>\n<li><strong>Per-user admin theme<\/strong> \u2014 each administrator can use their preferred dashboard theme independently<\/li>\n<li><strong>Draft &amp; scheduled support<\/strong> \u2014 apply themes to unpublished content for preview and staging<\/li>\n<li><strong>REST API support<\/strong> \u2014 configure custom REST API prefixes per theme<\/li>\n<li><strong>ACF compatible<\/strong> \u2014 loads Advanced Custom Fields JSON from all active theme directories<\/li>\n<li><strong>No code required<\/strong> \u2014 set up everything through the WordPress admin panel<\/li>\n<\/ul>\n\n<h4>How it works<\/h4>\n\n<ol>\n<li>Install and activate the plugin<\/li>\n<li>Go to <strong>Appearance &gt; Theme Switcher<\/strong><\/li>\n<li>Select a rule type (Page, Post, Post Type, Category, Tag, or Custom URL)<\/li>\n<li>Choose the content to target<\/li>\n<li>Pick the alternative theme<\/li>\n<li>Click <strong>Add Rule<\/strong> \u2014 changes apply immediately<\/li>\n<\/ol>\n\n<p>The plugin hooks into WordPress on the <code>setup_theme<\/code> action, before any theme code runs. This ensures full compatibility with theme features, widgets, customizer settings, and page builders.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>osom-multi-theme-switcher<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress<\/li>\n<li>Go to Appearance &gt; Theme Switcher to configure your theme rules<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20affect%20my%20site%27s%20main%20theme%3F\"><h3>Does this affect my site's main theme?<\/h3><\/dt>\n<dd><p>No. Your main active theme remains unchanged for all pages that don't have a specific rule. Only the pages, posts, or URLs you configure will use an alternative theme.<\/p><\/dd>\n<dt id=\"can%20each%20admin%20user%20have%20their%20own%20dashboard%20theme%3F\"><h3>Can each admin user have their own dashboard theme?<\/h3><\/dt>\n<dd><p>Yes. The admin bar theme switcher stores preferences per user. Each administrator can view the WordPress dashboard with their preferred theme without affecting other users or the frontend.<\/p><\/dd>\n<dt id=\"does%20the%20alternative%20theme%27s%20functions.php%20load%3F\"><h3>Does the alternative theme's functions.php load?<\/h3><\/dt>\n<dd><p>Yes. The plugin switches themes early in the WordPress loading process (on the <code>setup_theme<\/code> hook), ensuring the alternative theme's functions.php and all its features load correctly.<\/p><\/dd>\n<dt id=\"will%20this%20work%20with%20my%20page%20builder%3F\"><h3>Will this work with my page builder?<\/h3><\/dt>\n<dd><p>Yes. Since the full theme is loaded (not just styles), page builders like Elementor, Divi, and Beaver Builder work correctly with the alternative theme.<\/p><\/dd>\n<dt id=\"can%20i%20apply%20a%20theme%20to%20all%20products%20in%20woocommerce%3F\"><h3>Can I apply a theme to all products in WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. Use the \"Post Type\" rule type and select \"Products\" to apply a theme to all WooCommerce products and the shop archive.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20caching%20plugins%3F\"><h3>Does it work with caching plugins?<\/h3><\/dt>\n<dd><p>Most caching plugins work correctly. However, if you experience issues, you may need to exclude pages with alternative themes from the cache or use a caching plugin that supports conditional caching.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20for%20a%2Fb%20testing%20themes%3F\"><h3>Can I use this for A\/B testing themes?<\/h3><\/dt>\n<dd><p>While not designed specifically for A\/B testing, you can apply different themes to specific URLs and manually direct traffic to test user preferences.<\/p><\/dd>\n<dt id=\"is%20this%20plugin%20compatible%20with%20wordpress%20multisite%3F\"><h3>Is this plugin compatible with WordPress multisite?<\/h3><\/dt>\n<dd><p>The plugin is designed for single-site WordPress installations. For multisite setups, WordPress already provides per-site theme management. If you have a specific multisite use case, let us know through the support forum.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>Fix bug with object selectors<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Added cascading selector UI for adding theme rules (Custom Post Type, Taxonomy support)<\/li>\n<li>Added automatic status synchronization (OMTS_Status_Sync) \u2014 rules update when post status changes<\/li>\n<li>Added CPT\/taxonomy registry for re-registering missing CPTs across themes (OMTS_Theme_Switcher)<\/li>\n<li>Added early URL matching for categories, tags, custom taxonomies, post types, and CPT items<\/li>\n<li>Added is_query_ready() guard to prevent rule matching before WP_Query is available<\/li>\n<li>Added theme existence validation before switching template\/stylesheet<\/li>\n<li>Added get_rule_type_display() shared static method for consistent rule type labels<\/li>\n<li>Added new AJAX handlers: omts_get_rule_objects, omts_get_rule_items<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>readme.txt and screenshot changes<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Removed deprecated load_plugin_textdomain() call - translations are now handled automatically by WordPress.org<\/li>\n<li>Removed Domain Path header pointing to non-existent languages folder<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Support for pages, posts, post types, custom URLs, categories, and tags<\/li>\n<li>Support for draft, pending, private, and scheduled content<\/li>\n<li>AJAX-powered admin interface for real-time rule management<\/li>\n<li>Admin dashboard theme switcher in the top admin bar<\/li>\n<li>Per-user admin theme preferences stored in user meta<\/li>\n<li>REST API custom prefix support per theme<\/li>\n<li>ACF JSON loading from all installed themes<\/li>\n<li>Early theme switching via setup_theme hook for full compatibility<\/li>\n<\/ul>","raw_excerpt":"Use different themes for specific pages, posts, or URLs while keeping your main theme active site-wide.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/es-cr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/278086","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/es-cr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/es-cr.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/es-cr.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=278086"}],"author":[{"embeddable":true,"href":"https:\/\/es-cr.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/osomstudio"}],"wp:attachment":[{"href":"https:\/\/es-cr.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=278086"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/es-cr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=278086"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/es-cr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=278086"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/es-cr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=278086"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/es-cr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=278086"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/es-cr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=278086"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}