=== Row Action Duplicate Post ===
Contributors: rowactionduplicatepost
Tags: duplicate, clone, post, page, admin
Requires at least: 5.8
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.1.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Adds a Duplicate row action to posts and pages in the WordPress admin list tables.

== Description ==

Row Action Duplicate Post adds an explicit **Duplicate** link to the inline row actions on the Posts and Pages list screens in wp-admin.

When clicked, the plugin verifies the request nonce and user capabilities, copies the original post configuration, and creates a new draft using `wp_insert_post()`. Taxonomies and post meta are copied to the clone. You are redirected back to the posts or pages list screen.

You can duplicate content in three places:

1. **Posts** or **Pages** list table — hover a title and click **Duplicate** in the row actions.
2. **Bulk actions** — select one or more items, choose **Duplicate** from the Bulk actions dropdown, then click **Apply**.
3. **Edit screen** — open a post or page and click **Duplicate** in the publish sidebar.

== Installation ==

1. Upload the `row-action-duplicate-post` folder to the `/wp-content/plugins/` directory, or install the plugin through the WordPress Plugins screen.
2. Activate the plugin through the **Plugins** screen in WordPress.
3. Go to **Posts** or **Pages** in the admin. Each row will show a **Duplicate** action for users who can edit that item.

== Frequently Asked Questions ==

= What post types are supported? =

Posts and pages are supported via the `post_row_actions` and `page_row_actions` filters.

= What status does the duplicate receive? =

Duplicates are saved as drafts so you can review them before publishing.

= Are taxonomies and custom fields copied? =

Yes. Taxonomy terms and post meta are copied. Internal editor lock meta (`_edit_lock`, `_edit_last`) is excluded.

== Changelog ==

= 1.1.0 =
* Refactored plugin to an object-oriented architecture with the SPP class prefix.
* Preserved legacy `radp_*` function wrappers for backward compatibility.
* Added plugin slug constant and Domain Path header for WordPress.org compliance.
* Plugin Check fixes: nonce handling, hook prefix, readme header, and removed discouraged text domain loader.

= 1.0.0 =
* Initial release.
