Duplicate posts and pages as drafts with a single click — and get a gentle nudge to clean up the permalink before you publish.
- Author: 8am GmbH
- License: GPL-2.0-or-later
- Requires: WordPress 6.0+, PHP 7.4+
- "Duplicate" row action on every post, page, and custom post type list table.
- Copies title, content, excerpt, taxonomies, post meta, parent, and order.
- Marks the new draft with a
-copyslug suffix so it's easy to spot. - Block editor pre-publish panel that detects copy/duplicate slugs and offers a one-click "Regenerate from title" button.
- Classic editor publish-time prompt with the same logic.
- Self-update from this GitHub repository — no marketplace required.
- Fully translatable (German
de_DEand Swiss Germande_CHshipped).
- Download the latest release ZIP from
GitHub releases,
or clone this repository into
wp-content/plugins/eightam-duplicator. - Activate 8am Duplicator under Plugins in the WordPress admin.
- Go to Posts or Pages, hover any row, and click Duplicate.
- The new draft opens in the editor with a
-copyslug. - Before publishing, the editor shows a permalink check — click Regenerate from title to get a clean slug.
The plugin checks https://github.com/eightam/eightam-duplicator for new
releases roughly every 12 hours and shows updates on the standard
Plugins → Updates screen, just like plugins from wordpress.org.
A new release is detected when a GitHub release is published whose tag is greater than the version in the plugin header (semantic version compare). The release ZIP attached to the release is used as the update package; if no ZIP is attached, the auto-generated source archive is used.
To force a check, visit Dashboard → Updates and click Check again.
git clone git@github.com:eightam/eightam-duplicator.git
cd eightam-duplicatorThe plugin is plain PHP + a small vanilla JS file — no build step.
.pottemplate lives inlanguages/eightam-duplicator.pot.- German (
de_DE) and Swiss German (de_CH).po/.mofiles are shipped. - JS strings are loaded via
wp_set_script_translations().
- Bump
Version:ineightam-duplicator.phpand the fallback version ineightam_dup_enqueue_slug_check(). - Commit and tag:
git tag v1.4.0 && git push origin main --tags. - The
Build & attach plugin ZIPGitHub Action runs on the tag, buildseightam-duplicator-<version>.zip, creates a GitHub release for the tag (with auto-generated notes), and attaches the ZIP. The updater picks it up on the next plugin update check.
The workflow refuses to build if the tag version doesn't match the Version:
in the plugin header, so they can't drift. You can also run the workflow
manually from the Actions tab to produce a build artifact without releasing.
- Add lightweight GitHub-based self-updater. Shows updates from
eightam/eightam-duplicatorreleases under Plugins → Updates. Caches the latest release lookup for 12 hours.
- Fix: "Regenerate from title" button no longer crashes the block editor with
Cannot read properties of undefined (reading 'length'). The pre-publish panel now keepsNoticecontent to a single string and renders the rest as siblings, which avoids a GutenbergNoticea11y effect crash. - Show success message after regeneration (was masked by an early return).
- Disable the regenerate button when the title is empty.
- Initial public release.