=== MenuItem Copy & Paste === Contributors: sarap422 Tags: menu, navigation, copy, paste, clone Requires at least: 5.0 Tested up to: 7.0 Requires PHP: 7.4 Stable tag: 1.1.3 License: GPL v2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Copy, paste, clone, delete & collapse menu items, duplicate & export/import whole menus (JSON), and use shortcodes in menu items. == Description == MenuItem Copy & Paste enhances the WordPress menu editing interface by adding five quick action buttons to each menu item, making menu management significantly more efficient. = Key Features = * **➕ New**: Instantly create a new custom link below the selected menu item * **📒 Clone**: Duplicate a menu item immediately below itself * **🔗 Copy**: Copy menu item data to clipboard with visual highlight * **📋 Paste**: Paste copied items at the desired position * **🗑️ Delete**: Remove menu items without opening accordions * **▲▼ Collapse**: Fold/unfold child menu items under a parent (state saved in localStorage) = Perfect For = * Creating similar menu structures frequently * Managing large numbers of menu items efficiently * Quickly reorganizing menu layouts * Editing menus without accordion interactions = Features = * Simple and intuitive UI * Delete items without page reload (with fade-out animation) * Support for all menu item types (pages, posts, custom links, taxonomies, etc.) * Accurate position calculation considering hierarchical structure * Preserves all metadata (URL, classes, attributes, etc.) * Uses WordPress standard Dashicons == Installation == 1. Upload the plugin files to the `/wp-content/plugins/menuitem-copy-paste` directory 2. Activate the plugin through the 'Plugins' menu in WordPress 3. Go to Appearance → Menus and start using the new buttons == Frequently Asked Questions == = Which WordPress versions are supported? = WordPress 5.0 or higher. Tested up to the latest version (7.0). = Can deleted items be restored? = When you click the delete button, a confirmation dialog appears. Once deleted, items cannot be restored. However, if you don't click "Save Menu" in WordPress, you can reload the page to revert changes. = Can I paste copied items to different menus? = Yes. After copying a menu item, you can switch to a different menu and paste it there. = What are the default values for items created with the New button? = Title: "New Custom Link", URL: "/". You can edit these after creation by opening the accordion. = Can I copy child menu items? = The current version copies individual menu items only. The Clone button duplicates only the selected item, excluding child hierarchies. = What if the buttons don't appear? = Clear your browser cache. If they still don't appear, there may be a conflict with other plugins. Try temporarily disabling other plugins to identify the issue. == Screenshots == 1. Five buttons added to the menu editing interface (New, Clone, Copy, Paste, Delete) 2. Visual highlight of copied menu items 3. Confirmation dialog when deleting == Changelog == = 1.1.3 = * Resilience: the plugin now checks that its required `includes/` files exist before loading. If any are missing, it shows an admin notice and stops safely instead of triggering a site-wide fatal error. = 1.1.2 = * Packaging fix: the `includes/` directory (item-actions, shortcode, tools, builder classes) and `js/menuitem-menu-tools.js` were missing from the published package, causing a fatal error on activation ("require_once ... class-menuitem-builder.php: No such file"). Re-published with the complete file set. No code changes. = 1.1.1 = * Updated "Tested up to" to WordPress 7.0 * Security/coding-standards: made AJAX nonce verification explicit in each handler (menu duplicate/export/import) so it is visible to static analysis * Documented JSON request handling for the paste and import endpoints (validated via json_decode and sanitized per-field) = 1.1.0 = * Added Shortcode support: shortcodes now run in menu item URL, navigation label, and description (no extra metabox required; theme-defined shortcodes are executed) * Added Duplicate Menu: clone an entire menu (hierarchy preserved) from the editor, next to "Save Menu"; auto-named "{name}_copied" * Added per-menu JSON Export ("Export Menu" button, top-right of the menu editor) * Added JSON Import ("Import Menu" button): rebuilds a menu as a new menu; page/category items are re-resolved by slug on the target site, enabling cross-site migration of template menus = 1.0.7 = * Added Collapse feature: fold/unfold child menu items under any parent menu item * Collapse state is persisted per-menu in localStorage and restored on page reload * Auto-expansion before drag to safely move parents with their descendants * Toggle button auto-shows/hides based on whether the item has children * Adjusted button container width to accommodate the 6th button = 1.0.6 = * Added New feature: instantly create custom links below items * Added Clone feature: duplicate menu items immediately below * Added Delete feature: remove items without opening accordions * Added visual highlight (blue background) for copied items * Improved button tooltips with detailed descriptions * Enhanced security: strengthened $_POST variable validation * Improved code quality: compliance with WordPress Coding Standards = 1.0.4 = * Added accurate position calculation considering hierarchical structure * Implemented recursive descendant retrieval = 1.0.3 = * Initial release * Menu item copy & paste functionality == Upgrade Notice == = 1.1.3 = Adds a safety guard: a missing plugin file now shows an admin notice instead of a fatal error. Recommended update. = 1.1.2 = Critical fix: 1.1.1 was published with missing files and failed to activate. Update to 1.1.2 to restore functionality. No feature changes. = 1.1.1 = Maintenance release: WordPress 7.0 compatibility header and coding-standards hardening of AJAX nonce checks. No functional changes. = 1.1.0 = Adds shortcode support in menu items, whole-menu duplication, and per-menu JSON export/import (with slug-based re-resolution for cross-site migration). = 1.0.7 = Added a collapse/fold feature for parent menu items. Manage large menus more efficiently by hiding child items under their parents. State persists across reloads. = 1.0.6 = New creation, cloning, and deletion features added. Menu editing is now even more efficient. Security and code quality improvements included. == Support == If you have any issues or feature requests, please let us know in the plugin support forum. == Development == This plugin will also be available on GitHub. Contributions and issue reports are welcome.