WordPress管理画面の親メニューの表示順を制御し、カスタムセパレーターを追加できるプラグインです。
- シンプルな設定方法 - テキストエリアにメニュースラッグを記載するだけ
- テキスト付きセパレーター - メニューを視覚的にグループ化
- カスタムカラー対応 - セパレーターの背景色・文字色を指定可能
- アコーディオン機能 - メニューグループをクリックで開閉可能
- ワンクリックインポート - デフォルト状態のメニュー構成を即座に取り込み
- 未指定メニューの制御 - 設定外のメニューを末尾に追加するか、非表示にするかを選択可能
- ファイル設定対応 - JSONファイルで設定を管理可能(エンタープライズ向け)
- ワンクリックリセット - プラグイン一覧から設定を初期化可能(DBの設定値を削除)
親メニューの表示順を自由に変更できます。
- 通常のセパレーター: 横線のみ(WordPress標準)
- テキスト付きセパレーター: ラベル付きで視覚的にグループ化
- カラーカスタマイズ: 背景色・文字色・左ボーダー色を個別に指定可能
- テキストセパレーター(
separator: xxx)をクリックで開閉可能 - 開閉状態はブラウザに記憶されます(localStorage使用、Cookieは使用しません)
- 設定画面で一括ON/OFF切り替え可能
- すべてのテキストセパレーターに適用されます
- キーボード操作: Tabでセパレーターにフォーカス → Enter/Spaceで開閉
- UX保護のため、現在表示中の画面を含むグループは初期表示で必ず展開されます(ユーザー操作で閉じることは可能)
- デフォルト: 設定に含まれないメニューは、元の順序を保持したまま末尾に追加されます
- オプション有効時: 設定に含まれないメニューを非表示にできます
- 設定画面でON/OFF切り替え可能
ボタン一つでデフォルト状態のメニュー構成を設定画面に取り込めます。
- プラグインフォルダを
wp-content/plugins/にアップロード
wp-content/plugins/dcm-admin-menu-organizer/-
WordPress管理画面からプラグインを有効化
-
設定 → メニュー表示順から設定
設定 → メニュー表示順 にアクセスし、テキストエリアにメニュースラッグを1行ずつ記載します。
# ダッシュボード
index.php
# 投稿
edit.php
separator
# メディア
upload.php
メニューのスラッグをそのまま記載します。
index.php
edit.php
edit.php?post_type=page
options-general.php
# で始まる行はコメントとして無視されます。
# これはコメントです
index.php
空行は無視されます(見やすさのために自由に使えます)。
index.php
edit.php
横線のみを表示します。
separator
ラベルを付けてメニューをグループ化します。
separator: コンテンツ管理
背景色と文字色を指定できます。
separator: 入稿関連|#f0f6fc|#0969da
フォーマット: separator: テキスト|背景色|文字色|左ボーダー色|アイコン色
- 背景色は省略可能(省略時は透明)
- 文字色は省略可能(省略時は
#a0a5aa) - 左ボーダー色は省略可能(指定時は4pxの左ボーダーを表示)
- アイコン色は省略可能(アコーディオン有効時のみ。開閉アイコンの色を指定)
- カラーコードは
#から始まる16進数形式
separator: 入稿関連|#f0f6fc|#0969da|#0969da
separator: 入稿関連|#f0f6fc|#0969da|#0969da|#fff
設定画面で「アコーディオンを有効にする」にチェックを入れると、すべてのテキストセパレーターがクリックで開閉可能になります。
- セパレーターをクリックするとグループが折りたたまれます
- 開閉状態はブラウザに記憶されます(再読み込み後も維持)
- 現在表示中の画面を含むグループは、UX保護のため初期表示で必ず展開されます(ユーザー操作で閉じることは可能)
- 通常のセパレーター(
separatorのみ)はアコーディオンになりません - localStorageを使用して保存されます(Cookieは使用しません)
設定画面で「未指定のメニューを非表示にする」にチェックを入れると、設定に含まれないメニューが非表示になります。
- デフォルト: 設定に含まれないメニューは末尾に追加されます
- オプション有効時: 設定に含まれないメニューは非表示になります
- 注意: 設定に含め忘れたメニューは表示されなくなります
profile.php(プロフィールページ)は一般ユーザーの左メニューにのみ表示されるメニューです。設定に含めないと、一般ユーザーがログインした際に表示されなくなります。
設定画面の 「デフォルト状態のメニュー順序を挿入」 ボタンをクリックすると、初期表示時点のメニュー構成がテキストエリアに自動的に挿入されます。
- ボタンをクリック
- 自動的にメニュースラッグが入力される
- 必要に応じて
separatorを追加 - 「設定を保存」で反映
- 管理画面の「プラグイン」一覧(
/wp-admin/plugins.php)で本プラグイン行の「リセット」をクリック - 確認ダイアログでOKすると、保存済みの設定(メニュー順・アコーディオン・未指定メニュー非表示)が初期化されます
- JSONファイルを使っている場合は読み取り専用のため、リセットリンクはDB設定のみを削除します
- デフォルト: 設定に記載されていないメニューは、元の順序を保持したまま末尾に追加されます。これにより、新しいプラグインが追加した時でもメニューが消失することはありません。
- オプション有効時: 「未指定のメニューを非表示にする」オプションを有効にすると、設定に含まれないメニューは非表示になります。設定に含め忘れたメニューは表示されなくなるため、注意が必要です。
テキスト付きセパレーターには、グループIDに基づいたIDが自動生成されます。
separator-group-1
separator-group-2
separator-group-3
...
このIDを使って、独自のCSSでさらにカスタマイズすることも可能です。
- 開閉状態の記憶:
localStorageを使用して、各セパレーターの開閉状態を保存(Cookieは使用しません) - グループ化: セパレーターから次のセパレーターまでのメニューを1つのグループとして扱う
- 権限考慮: ユーザーに表示権限がないメニューのみのグループは自動的に非表示
- 現在地グループの初期展開: 現在表示中の画面を含むグループは初期表示で必ず展開される(ユーザー操作で閉じることは可能)
- アニメーション: CSS transition を使用したスムーズな開閉
- セキュリティー: 保存されるのは開閉状態のみで、個人情報や機密情報は含まれません
カラーコードは以下の形式に対応しています:
#RGB(例:#fff)#RRGGBB(例:#ffffff)- その他CSS有効なカラーコード
- プラグインが有効化されているか確認
- 設定画面で「現在の親メニュー一覧」を表示して、正しいスラッグを確認
- スラッグに余計なスペースが入っていないか確認
separator:の後にスペースがあるか確認(例:separator: テキスト)- ブラウザのキャッシュをクリア
- 設定を保存し直す
- カラーコードの形式を確認(
#から始まる16進数) - 区切り文字
|が正しく使われているか確認 - 例:
separator: テキスト|#f0f0f0|#333
manage_options権限を持つユーザーでログインしているか確認- WordPressのファイルパーミッションを確認
- 設定画面で「アコーディオンを有効にする」にチェックが入っているか確認
- テキストセパレーター(
separator: xxx)を使用しているか確認(通常のseparatorでは動作しません) - ブラウザのJavaScriptが有効になっているか確認
- ブラウザのコンソールでエラーが出ていないか確認
ブラウザの開発者ツールを開き、コンソールで以下を実行:
localStorage.removeItem('dcm_accordion_state');
location.reload();wp-content/dcm-admin-menu-organizer/settings.json を配置すると、ファイル設定がDBより優先され、管理画面は読み取り専用になります。
{
"menu_order": [
"index.php",
"separator: コンテンツ|#f0f6fc|#0969da|#0969da|#0969da",
"edit.php",
"upload.php",
"options-general.php",
"themes.php",
"plugins.php"
],
"accordion_enabled": true,
"hide_unspecified": false
}menu_order: 並び順。separator/separator: テキスト/separator: テキスト|背景色|文字色|左ボーダー色|アイコン色の記法が使えます。accordion_enabled: trueでアコーディオン有効。hide_unspecified: trueで設定に含まれないメニューを非表示(デフォルトは末尾追加)。- 設定ファイルのパスはフィルター
dcm_admin_menu_organizer_config_fileで変更可能。
- WordPress: 5.0以上
- PHP: 8.0以上(型指定を使用)
このプラグインは WordPress Coding Standards に準拠しています。
dcm-admin-menu-organizer/
├── dcm-admin-menu-organizer.php # メインファイル
├── assets/
│ ├── css/
│ │ └── dcm-admin-menu-organizer.css
│ └── js/
│ └── dcm-admin-accordion.js
└── README.md # このファイル
プラグインは以下のWordPressフックを使用しています:
admin_menu(優先度: 10) - 設定ページを追加admin_init- 設定を登録admin_head(優先度: PHP_INT_MAX) - メニューを並び替え(最終確定後に適用)admin_enqueue_scripts- 静的CSSを読み込みadmin_footer- 動的CSSを出力admin_footer- アコーディオン用のJSデータを出力
dcm_admin_menu_organizer_config_file- 設定ファイルのパスを変更可能にする
使用例:
// functions.php などに追加
add_filter( 'dcm_admin_menu_organizer_config_file', function( $config_file ) {
// カスタムパスに変更
return '/path/to/custom/settings.json';
// プラグインディレクトリ内に配置する例
// return WP_PLUGIN_DIR . '/my-plugin/menu-settings.json';
} );デフォルト値: wp-content/dcm-admin-menu-organizer/settings.json
設定は WordPress の wp_options テーブルに保存されます。
- オプション名:
dcm_admin_menu_organizer_settings- データ型:
ARRAY - 保存形式: 連想配列(以下のキー)
menu_order(string): プレーンテキスト(改行区切り)accordion_enabled(bool)hide_unspecified(bool)
- データ型:
GPL v2 or later
- メニュー並び替えの実行タイミングを
admin_head終盤に変更 - 動的CSS/JSデータの出力タイミングを
admin_footerに移動 - 静的CSSをファイル化して読み込み
このプラグインはエンタープライズプロジェクト向けに開発されました。問題が発生した場合は、開発チームにお問い合わせください。
生成されるセパレーターIDを使って、さらにカスタマイズできます:
/* 特定のセパレーターをカスタマイズ */
li#separator-text-1::after {
font-size: 16px !important;
padding: 15px !important;
}
/* すべてのテキストセパレーターに適用 */
li[id^="separator-text-"]::after {
text-transform: uppercase;
letter-spacing: 2px;
}global $menu;
foreach ($menu as $item) {
$slug = $item[2];
$title = wp_strip_all_tags($item[0]);
echo "Slug: $slug, Title: $title\n";
}Made for enterprise WordPress projects