Àpèjúwe
Swift Menu Duplicator gives you full control over your WordPress navigation menus. Clone any menu in one click, manage all menus from a dedicated admin page, version them with snapshots, move them across Multisite sub-sites, and automate everything from the command line or REST API.
One-Click Duplication
- Duplicate button right in the menu editor footer — no page reload required
- Full hierarchy preserved via a two-pass clone that remaps all parent-child item IDs
- All item metadata copied — type, object, URL, target, CSS classes, XFN, description
- Duplicate individual menu items directly from the menu editor
- Custom name support — filter
swift_menu_duplicator_new_menu_nameto override the default “(Copy)” suffix
Snapshot Revisions
- Auto-snapshot — a snapshot is saved automatically before every menu save
- Manual snapshots — save named snapshots from the menu editor at any time
- Browse & restore — view all snapshots in an expandable panel and restore with one click
- Housekeeping — delete individual snapshots you no longer need
Menu Manager (Appearance Menu Manager)
- Dedicated page listing every menu on the site in a sortable WP_List_Table
- Bulk duplicate — clone multiple menus at once
- Bulk export — download selected menus as a single ZIP archive
- Bulk delete — remove multiple menus in one action
- Row actions — duplicate or export individual menus directly from the list
JSON Export / Import
- Export any menu to a portable JSON file (via admin or REST API)
- Import from a JSON file upload or paste JSON directly into the text area
- URL find & replace — swap domain names during import for staging production migrations
- Dry-run preview — review what will be imported before making any changes to the database
Multisite Support
- Copy any menu to another site in your WordPress Multisite network
- Automatic URL rewriting in item URLs when copying across sub-sites
REST API
Full REST API at /wp-json/cmd/v1/ for headless and block-editor integrations:
POST /menus/{id}/duplicate— duplicate a menu (optionalnameparameter)GET /menus/{id}/export— export a menu as a JSON payloadPOST /menus/{id}/items/{item_id}/duplicate— duplicate a single menu item
Permission is controlled by the swmd_rest_permission filter (defaults to edit_theme_options).
WP-CLI
Full command-line support under the wp swift-menu-duplicator command group:
wp swift-menu-duplicator duplicate <menu-id> [--name=<name>]— duplicate a menuwp swift-menu-duplicator export <menu-id> [--output=<file>]— export to JSONwp swift-menu-duplicator import <file> [--name=<name>] [--find=<str>] [--replace=<str>] [--dry-run] [--porcelain]— import from JSONwp swift-menu-duplicator copy-to-site <menu-id> --target-blog=<id> [--name=<name>] [--find=<str>] [--replace=<str>]— copy to a sub-site
Multilingual Compatibility
- WPML — translation meta keys (
_icl_lang_duplicate_of,wpml_language, etc.) are stripped from duplicated items automatically - Polylang — language meta keys (
_pll_synced_taxonomies,_pll_menu_language, etc.) are stripped from duplicated items automatically - Additional keys can be excluded via the
swmd_compat_excluded_meta_keysfilter
Developer Hooks
swift_menu_duplicator_new_menu_name— customise the default duplicate nameswmd_rest_permission— control REST API accessswmd_before_duplicate_item/swmd_after_duplicate_menu_item— fired around item duplicationswmd_after_import_menu— fired after a successful importswmd_item_meta_keys— control which meta keys are copiedswmd_compat_excluded_meta_keys— extend the multilingual meta exclusion listwp_update_nav_menu— triggers auto-snapshot before every menu save
Security
- All AJAX actions verified with nonces and
edit_theme_optionscapability checks - All output escaped; all input sanitized
- Database queries use
$wpdb->prepare()— no string concatenation - REST API permission is filterable but defaults to
edit_theme_options - WordPress Filesystem API used for all file read/write/delete operations
Requirements
- WordPress 6.0 or higher
- PHP 7.4 or higher
- User with
edit_theme_optionscapability
Àwọn àwòrán ìbòjú
Ìgbéwọlẹ̀
- Upload the
swift-menu-duplicatordirectory to/wp-content/plugins/. - Activate the plugin through Plugins Installed Plugins.
- Go to Appearance Menus, select a menu, and click Duplicate Menu in the footer.
- For bulk management, snapshots, and import, visit Appearance Menu Manager.
FAQ
-
Does it copy theme location assignments?
-
No. Theme location assignments are site-specific and intentionally not copied, so the duplicate does not silently replace an active menu in any location.
-
All parent-child relationships are preserved exactly. The plugin uses a two-pass approach: items are cloned first, then parent ID references are re-mapped to the newly created item IDs.
-
Can I rename the duplicate before it is created?
-
Yes. A name field is shown in the duplicate modal. You can also change the default suffix globally by filtering
swift_menu_duplicator_new_menu_name. -
Is it compatible with WPML or Polylang?
-
Yes. Translation and language meta keys are automatically stripped from duplicated items so the copy starts as a clean, language-neutral menu.
-
Is it compatible with WooCommerce / HPOS?
-
Yes. The plugin only interacts with
nav_menu_itemposts and thenav_menutaxonomy. It has no dependency on WooCommerce or its High-Performance Order Storage. -
Yes. All items are duplicated regardless of their post status.
-
How do I use the REST API?
-
Authenticate with a cookie session or an Application Password, then send:
POST /wp-json/cmd/v1/menus/{menu_id}/duplicateThe response includes the new menuÌtumọ̀ Yorùbá: ’s
id,name, andedit_url. -
Export the source menu to JSON (admin UI or
wp swift-menu-duplicator export), transfer the file, then import it on the target site. Use the find/replace fields to rewrite domain-specific URLs during import. -
What capability is required?
-
edit_theme_options for all duplication, snapshot, export, and import actions. Multisite copy-to-site additionally requires
manage_optionson the target sub-site.
Àwọn àgbéyẹ̀wò
Kò sí àwọn àgbéyẹ̀wò fún plugin yìí.
Àwọn Olùkópa & Olùgbéejáde
“Swift Menu Duplicator” jẹ́ ètò ìṣàmúlò orísun ṣíṣí sílẹ̀. Àwọn ènìyàn wọ̀nyí ti ṣe ìkópa sí plugin yìí.
Àwọn OlùkópaTúmọ̀ “Swift Menu Duplicator” sí èdè rẹ.
Ṣe o nífẹ̀ẹ́ sí ìdàgbàsókè?
Ṣàwárí koodu, ṣàyẹ̀wò ibi ìpamọ́ SVN, tàbí ṣe àgbékalẹ̀ sí àkọsílẹ̀ ìdàgbàsókè nípasẹ̀ RSS.
Àkọsílẹ̀ àwọn àyípadà
1.0.1
- Fix: WP-CLI command renamed from
wp menu-duplicatortowp swift-menu-duplicatorfor consistency with the plugin slug. - Fix:
composer.lockwas excluded by.gitignoreglob pattern causing the SVN deploy workflow to fail. - Fix: Short description trimmed to satisfy the WordPress.org 150-character limit.
- Tested up to WordPress 7.0.
1.0.0
- Initial release.
- One-click menu duplication from the WordPress menu editor with hierarchy preserved.
- Duplicate individual menu items from the editor.
- Snapshot system: auto-snapshot before every save, manual snapshots, restore and delete.
- Appearance Menu Manager page with sortable table, bulk duplicate, bulk export (ZIP), and bulk delete.
- JSON export and import with URL find & replace and dry-run preview.
- Multisite support: copy menus to any sub-site with optional URL rewriting.
- REST API at
/wp-json/cmd/v1/— duplicate menu, export menu, duplicate item. - WP-CLI command group
wp swift-menu-duplicator— duplicate, export, import, copy-to-site. - WPML and Polylang compatibility — translation and language meta stripped from duplicates.
- Developer hooks and filters throughout for extensibility.





