WordPressでサイトを運営していると、メニューの編集作業に多くの時間を費やしていませんか?

  • 似たようなメニュー項目を何度も手作業で追加
  • メニュー項目を削除するたびにアコーディオンを開く
  • 複数のメニュー間でアイテムをコピーしたい

めんどくさかったので、MenuItem Copy & Paste というWordPressプラグインを開発しました。本記事では機能と使い方を解説します。


    MenuItem Copy & Pasteとは?

    MenuItem Copy & Pasteは、WordPressのメニュー編集画面にクイックアクションボタンメニューレベルのツールを追加し、メニュー管理を劇的に効率化するプラグインです。

    プラグインの基本情報

    項目内容
    プラグイン名MenuItem Copy & Paste
    バージョン1.1.1
    対応WordPress5.0以降
    対応PHP7.4以降
    ライセンスGPL v2 or later
    価格無料

    公式リンク:


    主な機能

    メニューアイテムごとのボタン(6つ)

    6つのボタン — Cloneのツールチップが見える

    各メニューアイテムの右側に、6つのボタンが追加されます。

    1. ➕ New(新規作成)

    クリックしたメニュー項目の直下に、新しいカスタムリンクを即座に作成します。

    デフォルト値:

    • タイトル: "新規カスタムリンク"
    • URL: "/"

    作成後、アコーディオンを開いて詳細を編集できます。

    2. 📒 Clone(複製)

    選択したメニュー項目を、直下に即座に複製します。タイトル、URL、CSSクラスなど主要なメタデータを引き継ぎます

    複製される情報:

    • タイトル / URL / リンクターゲット
    • CSSクラス / タイトル属性
    • 説明文 / その他主要なメタデータ

    3. 🔗 Copy(コピー)

    メニュー項目の情報をクリップボードにコピーします。

    コピーしたアイテムが青くハイライトされる

    コピーしたアイテムは青色の背景でハイライト表示されます。他のメニューに切り替えてもコピー内容は保持されます。

    4. 📋 Paste(ペースト)

    コピーしたメニュー項目を、指定した位置の直下に貼り付けます。別メニューへのペーストも可能です。

    5. 🗑️ Delete(削除)

    アコーディオンを開かずに、メニュー項目を直接削除します。

    削除の確認ダイアログ

    確認ダイアログで誤操作を防止。フェードアウトアニメーション付きで、ページリロードなしで削除完了します。

    注意: 「メニューを保存」をクリックしなければ、ページをリロードして元に戻せます。

    6. ▲▼ Collapse(折りたたみ)

    子メニューを持つ親アイテムに表示されるトグルボタンです。

    Collapseのツールチップ

    クリックすると子孫アイテムをすべて折りたたみ・展開できます。折りたたみ状態は localStorage に保存され、ページリロード後も維持されます。

    大量の子項目があるメニューの構造整理に非常に役立ちます。


    メニューレベルのツール(v1.1.1新機能)

    🗂️ Duplicate Menu(メニュー丸ごと複製)

    Duplicated Menuの結果 — <code>_copied</code> が自動生成される

    「メニューを保存」の横に追加された「メニューを複製」ボタンで、メニュー全体を階層構造ごと複製できます。複製されたメニューは {元の名前}_copied という名前で自動生成されます。

    活用例:

    • 多言語サイトで日本語メニューをベースに英語メニューを作成
    • テンプレートメニューを複製して編集

    ⬇️ Export Menu(JSONエクスポート)

    Export Menu — JSONファイルがダウンロードされる

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

    ⬆️ Import Menu(JSONインポート)

    Import Menu — ファイル選択ダイアログ

    インポート後に新しいメニューとして復元される

    Import Menu」ボタンでJSONファイルを選択すると、新しいメニューとして再構築されます。

    ポイント: 固定ページやカテゴリーはインポート先サイトのスラッグで再解決されるため、サイト間のメニュー移行が可能です。

    🧬 Shortcode対応

    メニュー項目のURL、ナビゲーションラベル、説明文にショートコードを記述すると、フロントエンドで展開されます。追加のメタボックス設定は不要です。


    使い方

    インストール方法

    WordPress.orgから(推奨)

    1. WordPress管理画面で「プラグイン」→「新規追加」を開く
    2. 検索バーに「MenuItem Copy & Paste」と入力
    3. 「今すぐインストール」→「有効化」をクリック
    4. 「外観」→「メニュー」を開くと、ボタンが表示されます

    手動インストール

    1. WordPress.orgからZIPファイルをダウンロード
    2. 「プラグイン」→「新規追加」→「プラグインのアップロード」
    3. ZIPファイルを選択して「今すぐインストール」
    4. 有効化後、メニュー編集画面を開く

    使用例:フッターメニューの同じようなアイテムをコピペ

    シナリオ: 以下のような構造をフッターメニューで作りたい

    <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つ目の項目を作成

    1. 🔗 Copyボタンでコピー
    2. 📋 Pasteボタンで直下に貼り付け
    3. 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_itemdelete_menu_item など)

    対応: 主要なアクション名に menucoam_ プレフィックスを追加

    • clone_menu_itemmenucoam_clone_menu_item
    • delete_menu_itemmenucoam_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 / ImportJSONでサイト間移行が可能
    Shortcodeラベル・URL・説明文でショートコードが使える

    WordPress.orgから無料でダウンロード:
    https://wordpress.org/plugins/menuitem-copy-paste/

    GitHubで開発に参加:
    https://github.com/sarap422/wp-plugin-menuitem-copy-paste


    他の開発実績:

    ブログ: https://code-plus.jp/gp/
    GitHub: https://github.com/sarap422