=== Freshet Pages Plus ===
Contributors: kristoffbertram
Tags: pages, duplicate page, duplicate post, admin columns, last modified
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.6.3
License: MIT
License URI: https://opensource.org/licenses/MIT

Duplicate page or post in one click, sortable last modified column, parent and template filters, the URL path under every title, search by slug.

== Description ==

WordPress' admin list tables were built for a blog with forty posts. On a site with four hundred pages nested six deep they stop answering the questions you actually have: where does this page live, which template renders it, what changed last, and who changed it.

Freshet Pages Plus puts those answers in the list tables you already use — Pages, Posts, and every public custom post type. There is no settings screen: each enhancement appears on the screens where it applies and nowhere else.

**What it adds**

* **Sortable "Modified" column** — when it was last edited, by whom, with the post ID underneath. On every public post type.
* **Full URL path under every title** — see where a page actually lives without opening it. Drafts show the path they will get.
* **Parent filter and sortable Parent column** — for hierarchical content, including a "Top level only" option.
* **Template column and filter** — see and filter by page template, wherever the theme registers templates for that post type.
* **Modified-before filter** — a date beside the other filters: only what nobody has touched since. Combines with the parent and template filters.
* **Slug/path search** — find a page by its URL fragment instead of guessing the title someone gave it.
* **One-click and bulk Duplicate** — copies a page with its terms and meta, as a draft.

In search terms: it lets you duplicate a page or duplicate a post (clone or copy it, one at a time or in bulk), sort by modified date with a last modified column, filter child pages by their parent, filter by page template, find what has not been modified since a date, and search by slug — admin columns and filters on the Pages screen and every public post type, with nothing to configure.

Part of the Freshet plugin suite. Full documentation: [freshet.studio/docs](https://freshet.studio/docs). Questions and problems: [freshet.studio/support](https://freshet.studio/support?utm_source=plugin&utm_medium=freshet-pages-plus).

== Installation ==

1. Install and activate the plugin.
2. Open **Pages** (or any other public post type). The columns, filters and the Duplicate action are already there.

There is nothing to configure.

== Frequently Asked Questions ==

= Where are the settings? =

There are none. Every enhancement appears where it applies — the parent filter only on hierarchical post types, the template column only where the theme registers templates — and stays out of the way everywhere else.

= Which post types does it touch? =

Every public post type with an admin UI, except attachments: the media library is a different screen with its own column plumbing.

= How do I duplicate a page or post? =

Hover a row on Pages, Posts or any public post type and click **Duplicate**: the copy is created as a draft and the editor opens on it. To clone several at once, tick them and pick **Duplicate** from the Bulk actions dropdown; the list reports how many copies were made.

= How do I sort pages by last modified date? =

Click the **Modified** column header. It sorts on WordPress' own modified ordering and shows the date, the post ID, how long ago that was, and the author, so the page someone touched this morning is one click away on a site with thousands.

= How do I see the child pages of a page? =

Pick the page in the parent filter dropdown above the list. You get its whole branch — children, grandchildren, all the way down — nested, in the site's own menu order. **Top level only** shows just the root pages.

= What does Duplicate copy? =

Content, excerpt, parent, menu order, password, comment and ping status, taxonomy terms and post meta. The copy is created as a draft, owned by you, titled "… (Copy)", with an empty slug so it never collides with the original.

= The Template column isn't showing =

Then the active theme registers no page templates for that post type. The column and its filter appear only where there is something to show.

= Does it change the front end? =

No. Everything it does happens in wp-admin.

= Where do I get help? =

Write to the address on [freshet.studio/support](https://freshet.studio/support?utm_source=plugin&utm_medium=freshet-pages-plus). Support is email, read by the person who wrote the plugin — say which plugin, which version, and what you saw, and a screenshot covers most of that in one go. Questions here in the WordPress.org support forum are read too.

== Screenshots ==

1. The Pages screen with the plugin active: the URL path under every title, a Parent column and parent filter, a sortable Modified column with ID, age and author, and Duplicate among the row and bulk actions.

== Changelog ==

= 1.6.3 =
* Maintenance: the plugin's own admin notice carries a class of its own, so a stylesheet can tell it apart from the notices other plugins print. Nothing changes in the list tables.

= 1.6.2 =
* New: the Author and Template columns sort — by the author's name and the template's name, not by the ID or the filename behind them.
* Where to get help is now in the readme: an address for questions and problems, beside the documentation link.

= 1.6.1 =
* Housekeeping: the bundled translation template and its Domain Path header are gone — wordpress.org builds the language packs from the code, so nothing is lost. No feature changes.

= 1.6.0 =
* New: Modified-before filter — a date field beside the parent and template filters; shows only what was last modified before it.
* Fix: a row saved through Quick Edit keeps its path line, its Parent, Template and Modified cells and its Duplicate action; it used to lose all of them until the page was reloaded.
* Extension points: a filter over the per-row path payload, `freshet_pagesplus_duplicate_post()` takes overrides, `window.freshetPagesplus.applyPaths()` re-applies path lines to rows rendered later, and the modified-before query var is a public constant.

= 1.5.2 =
* Listing: a screenshot of the Pages screen with the plugin active, a Live Preview that boots to a populated Pages screen, and a description written in the words people search for. No code changes.

= 1.5.1 =
* The text domain now matches the directory slug (freshet-pages-plus), so wordpress.org-delivered translations load.

= 1.5.0 =
* Fix: Duplicate no longer strips backslashes from content and meta (wp_insert_post/add_post_meta expect slashed data).
* New: Template column + filter dropdown, on post types where the theme registers page templates.
* New: post ID in the Modified column subline.

= 1.4.0 =
* Plugin-check escaping pass.
