=== York IE - Theme Switcher ===
Contributors: yorksupport
Tags: theme, preview, switcher, switch theme, Theme Switcher
Requires at least: 6.0
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.6.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Assign or preview a different installed theme on individual posts, pages, and custom post types without changing the site-wide active theme.

== Description ==

York IE - Theme Switcher lets editors assign a theme to a single piece of content or preview how that content looks in another installed theme. The site-wide active theme stays unchanged.

**Features**

* Assign a theme per post, page, or public custom post type
* Assign a page template from the selected theme, with a dropdown that updates when the theme changes
* Settings page to enable theme switching per post type
* Preview any supported item with another installed theme in a new tab
* Content Theme meta box in the editor sidebar
* Front-end admin bar menu for quick theme previews while logged in
* Preview banner with an exit link when previewing
* Works with subdirectory WordPress installs

**How it works**

1. Edit a post, page, or custom post type.
2. Choose a theme from the **Content Theme** sidebar panel.
3. Optionally choose a **Page template** from the selected theme. The template list refreshes whenever you change the theme.
4. Click **Update** to save the assignment, or use **Preview with selected theme** to test the theme and template without saving.

Visitors see the assigned theme only on that content item. Other pages continue using the active site theme.

**Permissions**

* Theme preview URLs require a valid nonce and permission to edit the item or the `switch_themes` capability.
* Assigned themes are visible to all visitors on the front end for that content item.

**Developer filters**

* `pagethsw_supported_post_types` — Limit or extend supported post types.
* `pagethsw_is_supported_post_early` — Control post type support before `init`.

== Installation ==

1. Install the plugin through the WordPress Plugins screen.
2. Activate the plugin through the **Plugins** screen in WordPress.
3. Edit any supported post, page, or custom post type and use the **Content Theme** panel in the sidebar.
4. Go to **Settings → York IE - Theme Switcher** to choose which post types are enabled.

== Frequently Asked Questions ==

= Does this change the active theme for the whole site? =

No. It only changes the theme used for the selected content item. The active theme under **Appearance → Themes** is not modified.

= Which content types are supported? =

Public post types with an admin UI are supported by default, including posts, pages, and custom post types. Attachments, revisions, templates, and other internal post types are excluded.

= Why can I preview a theme but visitors still see the default theme? =

Preview mode is for logged-in users with permission to edit the item. To apply a theme for everyone, choose a theme in **Content Theme**, save the item, and open the public URL without preview query arguments.

= Can I limit which post types show the Content Theme panel? =

Yes. Open **Settings → York IE - Theme Switcher** and check only the post types you want. Developers can use the `pagethsw_supported_post_types` filter.

= How does the page template dropdown work? =

After you assign a theme, the **Page template** dropdown lists the page templates declared by that theme for the current post type. Selecting one renders the content with that template on the front end (and in preview). The list updates automatically when you change the theme.

= Why are no templates listed for some themes? =

The dropdown reads the page templates a theme registers through the standard WordPress template headers. Themes that do not ship custom page templates for the current post type will only show **Default template**.

== Screenshots ==

1. Content Theme panel in the editor sidebar.
2. Theme preview banner on the front end.
3. Content Theme menu in the admin bar.

== Changelog ==

= 1.6.0 =
* Add a Page template dropdown to the Content Theme panel that lists the selected theme's page templates.
* The template list updates automatically when the assigned theme changes.

= 1.5.3 =
* Update plugin branding to York IE - Theme Switcher.

= 1.5.2 =
* Remove deprecated `pts_` filter hooks; use `pagethsw_` filters only.

= 1.5.1 =
* Rename plugin to York IE - Theme Switcher.

= 1.5.0 =
* Prefix all options, meta keys, hooks, and identifiers with `pagethsw_` per WordPress.org guidelines.
* Migrate legacy `pts_` data automatically on upgrade.

= 1.4.1 =
* Fix Plugin Check database query warnings for slug-based post lookups.

= 1.4.0 =
* Add settings page to enable theme switching per post type.

= 1.3.2 =
* Fix Plugin Check input sanitization and nonce verification warnings.

= 1.3.1 =
* Fix Plugin Check database escaping warnings in post lookup queries.

= 1.3.0 =
* Prepare plugin for WordPress.org distribution.
* Add uninstall routine and directory submission files.

= 1.2.3 =
* Fix saved theme assignments for custom post types before `init`.
* Improve URL resolution for subdirectory installs.

= 1.2.2 =
* Remove duplicate block editor sidebar panel.

= 1.2.1 =
* Include pages in supported post types.

= 1.2.0 =
* Add support for posts and custom post types.
* Fix block editor saving and subdirectory permalink handling.

= 1.0.0 =
* Initial release with per-page theme assignment and preview.

== Upgrade Notice ==

= 1.6.0 =
Adds a page template dropdown so you can assign a template from the selected theme per content item.

= 1.3.0 =
First WordPress.org release with uninstall support and documentation updates.
