WordPressでサイトを運営していると、メニューの編集作業に多くの時間を費やしていませんか?
- 似たようなメニュー項目を何度も手作業で追加
- メニュー項目を削除するたびにアコーディオンを開く
- 複数のメニュー間でアイテムをコピーしたい
めんどくさかったので、MenuItem Copy & Paste というWordPressプラグインを開発しました。本記事では機能と使い方を解説します。
MenuItem Copy & Pasteとは?
MenuItem Copy & Pasteは、WordPressのメニュー編集画面にクイックアクションボタンとメニューレベルのツールを追加し、メニュー管理を劇的に効率化するプラグインです。
プラグインの基本情報
| 項目 | 内容 |
|---|---|
| プラグイン名 | MenuItem Copy & Paste |
| バージョン | 1.1.1 |
| 対応WordPress | 5.0以降 |
| 対応PHP | 7.4以降 |
| ライセンス | GPL v2 or later |
| 価格 | 無料 |
公式リンク:
主な機能
メニューアイテムごとのボタン(6つ)

各メニューアイテムの右側に、6つのボタンが追加されます。
1. ➕ New(新規作成)
クリックしたメニュー項目の直下に、新しいカスタムリンクを即座に作成します。
デフォルト値:
- タイトル: "新規カスタムリンク"
- URL: "/"
作成後、アコーディオンを開いて詳細を編集できます。
2. 📒 Clone(複製)
選択したメニュー項目を、直下に即座に複製します。タイトル、URL、CSSクラスなど主要なメタデータを引き継ぎます。
複製される情報:
- タイトル / URL / リンクターゲット
- CSSクラス / タイトル属性
- 説明文 / その他主要なメタデータ
3. 🔗 Copy(コピー)
メニュー項目の情報をクリップボードにコピーします。

コピーしたアイテムは青色の背景でハイライト表示されます。他のメニューに切り替えてもコピー内容は保持されます。
4. 📋 Paste(ペースト)
コピーしたメニュー項目を、指定した位置の直下に貼り付けます。別メニューへのペーストも可能です。
5. 🗑️ Delete(削除)
アコーディオンを開かずに、メニュー項目を直接削除します。

確認ダイアログで誤操作を防止。フェードアウトアニメーション付きで、ページリロードなしで削除完了します。
注意: 「メニューを保存」をクリックしなければ、ページをリロードして元に戻せます。
6. ▲▼ Collapse(折りたたみ)
子メニューを持つ親アイテムに表示されるトグルボタンです。

クリックすると子孫アイテムをすべて折りたたみ・展開できます。折りたたみ状態は localStorage に保存され、ページリロード後も維持されます。
大量の子項目があるメニューの構造整理に非常に役立ちます。
メニューレベルのツール(v1.1.1新機能)
🗂️ Duplicate Menu(メニュー丸ごと複製)

「メニューを保存」の横に追加された「メニューを複製」ボタンで、メニュー全体を階層構造ごと複製できます。複製されたメニューは {元の名前}_copied という名前で自動生成されます。
活用例:
- 多言語サイトで日本語メニューをベースに英語メニューを作成
- テンプレートメニューを複製して編集
⬇️ Export Menu(JSONエクスポート)

メニュー編集画面の右上「Export Menu」ボタンで、現在のメニューをJSONファイルとしてダウンロードできます。
⬆️ Import Menu(JSONインポート)


「Import Menu」ボタンでJSONファイルを選択すると、新しいメニューとして再構築されます。
ポイント: 固定ページやカテゴリーはインポート先サイトのスラッグで再解決されるため、サイト間のメニュー移行が可能です。
🧬 Shortcode対応
メニュー項目のURL、ナビゲーションラベル、説明文にショートコードを記述すると、フロントエンドで展開されます。追加のメタボックス設定は不要です。
使い方
インストール方法
WordPress.orgから(推奨)
- WordPress管理画面で「プラグイン」→「新規追加」を開く
- 検索バーに「MenuItem Copy & Paste」と入力
- 「今すぐインストール」→「有効化」をクリック
- 「外観」→「メニュー」を開くと、ボタンが表示されます
手動インストール
- WordPress.orgからZIPファイルをダウンロード
- 「プラグイン」→「新規追加」→「プラグインのアップロード」
- ZIPファイルを選択して「今すぐインストール」
- 有効化後、メニュー編集画面を開く
使用例:フッターメニューの同じようなアイテムをコピペ
シナリオ: 以下のような構造をフッターメニューで作りたい
<ul class="menu">
<li><a href="https://mysite.jp/assets/pdf/action-plan.pdf" target="_blank">アクションプラン</a></li>
<li><a href="https://mysite.jp/assets/pdf/employer-plan.pdf" target="_blank">雇用プラン</a></li>
<li><a href="https://mysite.jp/assets/pdf/promotion-plan.pdf" target="_blank">プロモーションプラン</a></li>
</ul>1つ目の項目を作成
- 🔗 Copyボタンでコピー
- 📋 Pasteボタンで直下に貼り付け
- URLとタイトルだけ編集
アコーディオンの開閉なしで、同じ設定(新しいタブで開くなど)を引き継いだアイテムを量産できます。
技術的な特徴
セキュリティ
- nonceトークン検証なCSRF攻撃を防止
- 権限チェックな
edit_theme_options権限を持つユーザーのみ操作可能 - 入力検証な主要な
$_POSTデータをisset()で検証 - JSONバリデーションな
json_last_error()でデコードエラーを検出、10KB上限でDoS防止 wp_unslash()使用なWordPress標準のサニタイズ
コード品質
- WordPress Coding Standards準拠なPlugin CheckでWARNINGを解消
- プレフィックス使用な
menucoam_で他プラグインとの名前衝突を回避 - クラスベース設計な
includes/配下にbootstrap・item-actions・shortcode・tools・builderクラスを分離 - jQueryベースなWordPressの標準ライブラリを使用
パフォーマンス
- 条件付き読み込みな
nav-menus.phpでのみスクリプトとスタイルを読み込み - 非同期処理なAJAX通信でページリロードを最小化
localStorage活用なCollapseの状態をブラウザ側で保持
WordPress.orgへの公開までの道のり
レビューでの指摘と対応
1. プレフィックスの問題
指摘: AJAXアクション名が一般的すぎる(clone_menu_item、delete_menu_item など)
対応: 主要なアクション名に menucoam_ プレフィックスを追加
clone_menu_item→menucoam_clone_menu_itemdelete_menu_item→menucoam_delete_menu_item
2. 英語のreadme.txt
指摘: readme.txtが日本語で記述されている
対応: 主要な説明を英語で記述。承認後、translate.wordpress.orgで日本語化できます。
3. セキュリティ向上
指摘: $_POST 変数のサニタイズが不十分
対応: isset() チェックの追加、wp_unslash() の使用、JSONデコードのエラーハンドリングを強化
レビュー期間
- 申請日な2025年10月27日
- 承認日な2025年11月4日
- 所要日数な約7日間
まとめ
MenuItem Copy & Pasteを使えば、WordPressのメニュー編集が劇的に効率化されます。
| 機能 | できること |
|---|---|
| New | 直下に新規カスタムリンクを即時作成 |
| Clone | メニューアイテムを直下に複製 |
| Copy / Paste | アイテムを別メニューにも貼り付け可能 |
| Delete | アコーディオン不要で直接削除 |
| Collapse | 子項目を折りたたんで構造を整理 |
| Duplicate Menu | メニュー全体を階層ごと複製 |
| Export / Import | JSONでサイト間移行が可能 |
| Shortcode | ラベル・URL・説明文でショートコードが使える |
WordPress.orgから無料でダウンロード:
https://wordpress.org/plugins/menuitem-copy-paste/
GitHubで開発に参加:
https://github.com/sarap422/wp-plugin-menuitem-copy-paste
他の開発実績:
- Category Color Picker — カテゴリーに色を設定できるプラグイン
ブログ: https://code-plus.jp/gp/
GitHub: https://github.com/sarap422

