

Duplicating a menu from the menu editor — name the copy before it is created.
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.
swift_menu_duplicator_new_menu_name to override the default “(Copy)” suffixwp_navigation posts), not just classic menusFull REST API at /wp-json/swift-menu-duplicator/v1/ for headless and block-editor integrations:
POST /menus/{id}/duplicate — duplicate a menu (optional name parameter)GET /menus/{id}/export — export a menu as a JSON payloadPOST /menus/{id}/items/{item_id}/duplicate — duplicate a single menu itemPOST /menus/import — import a menu from an export payloadGET /menus/{id}/snapshots — list snapshotsPOST /menus/{id}/snapshots — save a snapshotPOST /menus/{id}/snapshots/{snapshot_id} — restore a snapshotDELETE /menus/{id}/snapshots/{snapshot_id} — delete a snapshotGET /navigations — list block navigation menusPOST /navigations/{id}/duplicate — duplicate a block navigation menuGET /navigations/{id}/export — export a block navigation menuPOST /navigations/import — import a block navigation menuPermission is controlled by the swift_menu_duplicator_rest_permission filter (defaults to edit_theme_options).
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-sitewp swift-menu-duplicator snapshot list|save|restore|delete <menu-id> [--label=<label>] [--id=<uuid>] — manage snapshotswp swift-menu-duplicator navigation list|duplicate|export|import [<id-or-file>] [--title=<title>] [--output=<file>] — block navigation menus_icl_lang_duplicate_of, wpml_language, etc.) are stripped from duplicated items automatically_pll_synced_taxonomies, _pll_menu_language, etc.) are stripped from duplicated items automaticallyswift_menu_duplicator_compat_excluded_meta_keys filterswift_menu_duplicator_new_menu_name — customise the default duplicate nameswift_menu_duplicator_rest_permission — control REST API accessswift_menu_duplicator_before_duplicate_item / swift_menu_duplicator_after_duplicate_menu_item — fired around item duplicationswift_menu_duplicator_after_import_menu — fired after a successful importswift_menu_duplicator_before_restore_snapshot / swift_menu_duplicator_after_restore_snapshot — fired around a snapshot restoreswift_menu_duplicator_after_undo_delete — fired after a deleted menu is restoredswift_menu_duplicator_undo_ttl / swift_menu_duplicator_undo_limit — how long deletions stay recoverable, and how many are keptswift_menu_duplicator_item_meta_keys — control which meta keys are copiedswift_menu_duplicator_compat_excluded_meta_keys — extend the multilingual meta exclusion listwp_update_nav_menu — triggers auto-snapshot before every menu saveedit_theme_options capability checks$wpdb->prepare() — no string concatenationedit_theme_optionsRequirements
edit_theme_options capability