Admin menu

A GUI menu that can be used for;

  • Managing permissions for groups and individual players
  • Creating and removing groups
  • Adding and removing players from groups
  • Running chat and console commands
  • Giving items to players

252490_screenshots_20170703214901_1.jpg 252490_screenshots_20170704195250_1.jpg 252490_screenshots_20170704195257_1.jpg 252490_screenshots_20170704195304_1.jpg 252490_screenshots_20170704195309_1.jpg

252490_screenshots_20170703214911_1.jpg give1.jpg give2.jpg

Chat Command
/admin — Opens the menu. (Requires permission adminmenu.use)

adminmenu.use — Required to open the menu and access the commands section
adminmenu.permissions — Required to access the permission section
adminmenu.groups — Required to access the groups section
adminmenu.give — Required to access the Give menu

Commands Menu (Requires permission adminmenu.use)
You can set chat and console commands that can be run via the menu. These commands are run as if the user is typing it themselves so any commands will need the relevant permission/authlevel to be run. You can also give items to players from the "give" submenu

There are currently 4 variables you can put into the commands to make them target specific. They are;
By using the variable "{target1_name}" or "{target1_id}" in a command will trigger the player selection menu allowing you to select a target player for the command.
By using the variable {target2_name}" or "{target2_id}" in a command will trigger a second player selection menu allowing you to select a additional target player for the command.
The name variables will be replaced with the targets display name, and in-turn the ID variables will be replaced with the targets user ID.

An example of usage for 2 target players:
Teleporting Player1 to Player2 using the /tp command.
An example of usage for 1 player:
Teleporting to the target player using the /tp command.
An example of a command that does not require any targets:
Toggling god mode on yourself.
I am happy to expand upon this with additional variables if you can think of any alternative use-cases

Permissions Menu (Requires permission adminmenu.permissions)
The are 3 categories in the permissions menu.
View — This is just a list of all currently registered permissions

Player Permissions — This will open a player selection menu, once you have selected a player it will display all currently available permissions, with permissions that the player has being highlighted in green. You can then toggle permissions for the selected player by clicking the permission button.

Group Permissions — This will open a group selection menu, once you have selected a group it will display all currently available permissions, with permissions that the group has being highlighted in green. You can then toggle permissions for the selected group by clicking the permission button.

Groups Menu (Requires permission adminmenu.groups)
There are 4 categories in the groups menu.
View — This is a list of all groups

Create Group — This menu is used to create new groups. It has 3 input boxes (Name, Title and Rank). Upon filling in a box you must hit "ENTER" to register your input. At the very least you need to specify a group name to create a new group. Once you have filled in the details you can press the "Create" button to create the new group. If you want to clear your input press the "Reset" button.
**Note 1** If you have any GUI plugins in the background that are constantly updating (LustyMap for example) it will cause your input to reset. You must disable any auto-refreshing background UI before using this menu!
**Note 2** GUI Input boxes are not perfect, they may randomly reset your input and any keys you press whilst typing will affect your character ingame (pressing 'w' for example will move your character forward)

Remove Group — Select a group to delete. Be warned that this process can not be undone!

User Groups — This will open a player selection menu, once you have selected a player it will display all available groups, with groups that the player is in being highlighted in green. You can then toggle groups for the selected player by clicking the group button

Config Options
Chat Command List — This is a list of chat commands you wish to be available through the menu
Console Command List — This is a list of console commands you wish to be available through the menu
Colors — Various UI color options

Command Entry
A command entry is the details of a command you want to add to the menu. Commands will be ordered in the menu as they are set out in the config. A command entry has 3 parts;
Name — The name of the command
Description — A short description of what the command does
Command — The command itself

Be sure you add console commands in to the console command list and vice-versa!


Rearrange your WordPress admin menu

After you begin to add new plugins and functions to your blogging system, you’ll keep on stacking up the icons in the admin menu and you can easily end up with a confusing menu where your authors won’t be able to find their posts or a gallery to add new images.

That’s when you will start to think about rearranging the icons. And that’s where a simple plugin will be a great assistant for you.

Admin Menu Manager


Admin menu

After you install this free & lightweight plugin, you will get only one option. And that’s the option for editing the menu.

If you hit the button, your menu goes “under construction” and you are free to move the elements around. Drag and drop menu and submenu items and create a menu which suits you the best. Do you want a “New post” link to be right next to “New Page”? You can do that. Actually, you can rearrange elements however you want. You can drag a top level menu item into a submenu and the other way around, so why wouldn’t you have “New Post” item hanging by itself instead of having it into a submenu? It’s your choice.

If you’re still not sure why this little plugin is so cool, take a look at demo video.

How to customize WordPress Admin Menus

While the WordPress frontend is highly customizable and you literally have limitless options for your site, backend i.e. the WordPress Dashboard is somewhat limited and you’re basically stuck with what you got.

Since there are plugins for almost everything in WordPress, why wouldn’t there be one which will let you customize your admin area? Well, there is, and not only one of course.

If you’re into coding, you might not be interested in this part of the guide because we’re not going to show you the code behind the plugin but only give you short guide how to set up plugins and easily change the design of your admin area. But you probably want just that, don’t you?

Client Dash


For starters, you might want to change the admin menu for yourself or any other user. This can be easily done with this free plugin where you have the power to change the entire menu which you see while working on your WordPress blog. For example, you can add new menu items, remove ones you don’t need or don’t want to make accessible for a specific user role, you can change icons, etc. So, how to do that? Let’s start:

  1. Go to Plugins -> Add New
  2. Install and activate Client Dash plugin
  3. Navigate to Settings -> Client Dash
  4. In the second tab, choose “Menus”
  5. Select User Role and click “Add Menu”

This is where your customization starts. After the plugin has done creating your new menu, you will see the screen as it looks right now. Here you can add or remove the menu items, type in new labels and even change the standard icons. Whether it is a post type you want to add or maybe a custom link, Client Dash will let you do that. Drag and Drop items and create yourself a personalized menu which will make you work faster.

Admin Menu Editor

PRICE: Free/$19

Admin menu

Although more popular than the previously mentioned plugin, Admin Menu Editor comes in free and premium version so you will have to buy the license if you want all the extra features. There aren’t big differences between the plugins and Admin Menu Editor will also give you the ability to rearrange menu for yourself or any other user role simply by dragging and dropping menus and submenus where you want them.

You can change access rights, icons, and titles for all menus, export and import them and even use shortcodes. Check out the PRO version demo to see the real power of this plugin.

  1. Install Admin Menu Editor and activate it
  2. Navigate to Settings -> Menu Editor (PRO)
  3. Select User Role which you like to edit and set up the menu as you like
  4. Save changes

How to change colors in admin menus

When it comes to customization, you might want to change the way your administration area looks like. By default, there are 8 color schemes which you can choose for your profile. But maybe you don’t like the standard colors or you want those to match colors on your site. And that’s where you want more options, right?

There a different ways of changing color schemes for your admin menu. In this part of the article, we will show you two plugins which can do a great job – you can install a simple plugin which will add eight more color schemes or play with the color picker in the other one.

Admin Color Schemes


Admin menu

If you don’t need to go into details and choose every color by yourself, you might want to try this simple and free plugin. You simply need to install Admin Colors Schemes and the plugin will automatically add 8 new color schemes which you can find under user options:

  1. Install Admin Color Schemes plugin and activate
  2. Navigate to Users -> Your Profile
  3. Under Admin Color Scheme choose a new scheme you want to use

WordPress Admin Color Scheme Generator


The previously mentioned plugin will just add those 8 colors schemes, but if you want to have control over every color in your scheme, you will need more options. Unfortunately, this plugin has been removed from the original website which allowed you to pick colors directly from your browser, but you can still download this plugin and install it manually.

Follow the next few steps and you’ll have a custom admin color scheme in a minute or two (or if you’re like us, you might spend an hour before you find the perfect color combination).

  1. Download WordPress Admin Color Scheme Generator
  2. Install and activate the plugin
  3. Create custom schemes by choosing colors

How to change colors in admin menus without plugins

Instead of installing additional plugins for changing colors in admin menus, in this part, we will teach you how to change color schemes simply by putting the following code in your functions.php and actually make a simple plugin on your own.

With this code, you can choose any colors you want, but instead of choosing one from color picker, you’ll have to write color’s hexadecimal triplets. You can get those by using any color picker you want – from Paint to Photoshop or any online color picker.

  1. Go to your functions.php file
  2. Paste the following code at the end:
  3. function additional_admin_color_schemes() {    //Get the theme directory    $theme_dir = get_template_directory_uri();       //Ocean    wp_admin_css_color( 'isitwpcolor', __( 'Is It WP' ),    $theme_dir . '/admin-colors/isitwp/colors.min.css',    array( ' #ed2a0c', '#000000', '#738e96', '#f2fcff' )    );   }   add_action('admin_init', 'additional_admin_color_schemes');
  4. With the next piece of code, make your new color scheme active:

  5. function set_default_admin_color($user_id) {    $args = array(    'ID' => $user_id,    'admin_color' => 'isitwpcolor'    );    wp_update_user( $args );

    add_action(‘user_register’, ‘set_default_admin_color’);

    Unfortunately, we’re not done yet. After this step, you need to paste another function to change the label of your newly created color schemes in order to make it work

  6. Paste the following code:
function rename_fresh_color_scheme() {    global $_wp_admin_css_colors;    $color_name = $_wp_admin_css_colors['fresh']->name;       if( $color_name == 'Default' ) {    $_wp_admin_css_colors['fresh']->name = 'Fresh';    }    return $_wp_admin_css_colors;   }   add_filter('admin_init', 'rename_fresh_color_scheme');

That was the last step in creating your custom color scheme without installing any extra plugins. While it was maybe a bit more time consuming, you won’t have to care about that one extra plugin installed on your WordPress.


While customizing the WordPress admin menu won’t be the first thing on your to-do list, it’s definitely something that you should take care of if you are going to work on your site for a longer period of time. Having a customized menu, different icons or color sets can help you work more easily. It will also create that unique feel for all users that have access to the backend.

So, if you have a few minutes to spare, go through this article and modify your admin menus.

Меню графического интерфейса, которое можно использовать:

  • Управление разрешениями для групп и отдельных игроков
  • Создание и удаление групп
  • Добавление и удаление игроков из групп
  • Запуск команд чата и консоли
  • Предоставление игрокам предметов

Admin menu Admin menu Admin menu Admin menu Admin menu Admin menu Admin menu Admin menu

Команда чата
/admin — открывает меню. (Требуется разрешение adminmenu.use)

Права доступа
adminmenu.use — требуется чтобы открыть меню и получить доступ к разделу команд
adminmenu.permissions — требуется для доступа к разделу разрешений
adminmenu.groups — требуется для доступа к разделу групп

Меню команд (требуется разрешение adminmenu.use)
Вы можете установить команды чата и консоли, которые можно запустить через меню. Эти команды запускаются так, как если бы пользователь сам вводил их, поэтому для любых команд потребуется соответствующее разрешение/уровень доступа для запуска. Вы также можете давать предметы игрокам из подменю «дать»

В настоящее время есть 4 переменных, которые вы можете поместить в команды, чтобы сделать их целевыми:
Используя переменную "{target1_name}" или "{target1_id}" в команде вызывается меню выбора доступа, позволяющее выбрать целевого игрока для команды.
При использовании переменной "{target2_name}" или "{target2_id}" в команде будет вызываться меню выбора второго игрока, позволяющее выбрать дополнительный целевой игрок для команды.
Переменные имени будут заменены отображаемым именем цели, а в свою очередь переменные идентификатора будут заменены идентификатором пользователя целей.

Пример использования для 2 целевых игроков:
Телепортирование Player1 в Player2 с помощью команды /tp.
Пример использования для 1 игрока:
Телепортирование к целевому игроку с помощью команды /tp.
Пример команды, которая не требует каких-либо целей:
Переключение режима Бога на себя.
Я рад расширить это с помощью дополнительных переменных, если вы можете подумать о любых альтернативных вариантах использования

Меню разрешений (требуется разрешение adminmenu.permissions)
В меню разрешений есть 3 категории.
View — это список всех зарегистрированных в настоящее время разрешений

Разрешения для проигрывателя — это откроет меню выбора игрока, после того как вы выбрали игрока, он отобразит все доступные в настоящее время разрешения, с разрешениями, которые игрок выделяет зеленым цветом. Затем вы можете переключать разрешения для выбранного игрока, нажав кнопку разрешения.

Групповые разрешения. Это откроет меню выбора группы, после того как вы выберете группу, она отобразит все доступные в настоящее время разрешения с разрешениями, выделенными группой зеленым цветом. Затем вы можете переключать разрешения для выбранной группы, нажав кнопку разрешения.

Меню групп (требуется разрешение adminmenu.groups)
В меню групп есть 4 категории.
Просмотр — это список всех групп

Создать группу — это меню используется для создания новых групп. Он имеет 3 поля ввода (Имя, Название и Ранг). После заполнения коробки вы должны нажать «ENTER», чтобы зарегистрировать свой вход. По крайней мере вам нужно указать имя группы для создания новой группы. После того, как вы заполнили детали, вы можете нажать кнопку «Создать», чтобы создать новую группу. Если вы хотите очистить ввод, нажмите кнопку «Сброс».
** Примечание 1 ** Если у вас есть плагины GUI в фоновом режиме, которые постоянно обновляются (например, LustyMap), это приведет к сбросу вашего ввода. Перед использованием этого меню вы должны отключить какой-либо автообновляющий фоновый интерфейс!
** Примечание 2 ** Коды ввода GUI не идеальны, они могут случайным образом сбрасывать ваш ввод и любые клавиши, которые вы нажимаете, пока набирает текст, будет влиять на ваш игровой процесс (нажатие «w», например, приведет к перемещению вашего персонажа вперед)

Удалить группу — выберите группу для удаления. Будьте предупреждены, что этот процесс нельзя отменить!

Группы пользователей. Это откроет меню выбора плеера, после того как вы выберете игрока, он отобразит все доступные группы с группами, в которых игрок выделяется зеленым цветом. Затем вы можете переключать группы для выбранного игрока, нажав кнопку группы

Параметры конфигурации
Список команд чата — это список команд чата, которые вы хотите получить через меню
Список команд консоли — это список консольных команд, которые вы хотите получить через меню
Цвета — различные параметры цвета пользовательского интерфейса

Ввод команды
Командная запись — это информация о команде, которую вы хотите добавить в меню. Команды будут заказываться в меню, как они указаны в конфиге. Команда имеет 3 части;
Имя — название команды
Описание. Краткое описание того, что делает команда.
Команда — сама команда

Обязательно добавьте команды консоли в список команд консоли и наоборот!

Особенности плагина Admin Menu Editor:

  • Показ меню по ролям пользователей
    Измените права доступа к админ-меню всего за пару кликов. Нажмите роль, снимите флажки с элементами меню, которые вы хотите скрыть, и проверьте те, которые вы хотите отобразить. Вы также можете изменять разрешения для отдельных пользователей. Например, вы можете скрыть меню от всех, кроме себя, или предоставить пользователю доступ к определенному пункту меню без изменения его роли.
  • Настройка меню с помощью перетаскивания пунктов
    Сделайте WordPress проще в использовании, перемещая часто используемые элементы меню вверх. Вы также можете перемещать пункты меню из одного подменю в другое или в главное меню. Хотите сделать ссылку верхнего уровня «Добавить новую пост» или на определенный плагин? Вы можете это легко сделать. Получили ненужный пункт нового плагина, который помещает свою ссылку на страницу настроек в неправильное место? Вместо этого переместите его в «Настройки».
  • Выберите из более чем 600 значков меню
    Плагин поставляется с большой коллекцией иконок из шрифтов Dashicons и FontAwesome. Вы можете загрузить свои собственные значки PNG или GIF через медиабиблиотеку или вручную ввести URL-адрес значка. Вы также можете добавлять значки в элементы подменю.
  • Изменение цвета меню
    Отредактируйте фон, текст, значок и выделите цвета. Вы можете применить свои изменения во всём меню администратора или настроить цвета отдельных элементов.
  • Создание новых пунктов меню
    Вы можете добавить свои собственные ссылки в меню администратора. Вы также можете создать пользовательское меню, в которое встроено содержимое поста или страницы в админ-панели WordPress. Наконец, можно создавать элементы без кликов, которые могут быть полезны для таких вещей, как заголовки разделов в сложных меню администратора.
  • Сделать открытие пункта меню в новой вкладке или iframe
    Предположим, вы создаете сайт для клиента, и вы хотите, чтобы страница учебника или внешний сервис выглядели как часть WordPress. Опция «Открыть в: Frame» может помочь в этом. Он отобразит связанную страницу во фрейме. Для полноты также включена опция «нового окна» (т. е. Target = “_ blank”).
  • Параметры меню импорта и экспорта
    Экспортируйте конфигурацию меню администратора в файл, а затем импортируйте его на другой сайт.
  • Скрыть плагины
    Скройте отдельные записи на странице «Плагины». Как и в пунктах меню, вы можете скрыть их от всех или только от определенных ролей или пользователей.
  • Примените свой брендинг
    Используйте надстройку Branding, чтобы заменить брендинг по умолчанию WordPress своим собственным. Вы можете заменить логотип WordPress, настроить страницу входа в систему, изменить цветовую схему администратора, скрыть версию WordPress и основные уведомления об обновлениях и т. д.
  • Редактирование панели администратора
    Дополнительный аддон-редактор панели инструментов позволяет настраивать панель администратора, которая также известна как панель инструментов WordPress. Вы можете скрыть элементы панели инструментов, изменить их порядок с помощью drag & drop перетаскивания, переименовать элементы, добавить новые ссылки и многое другое.


Кастом меню (Custom menu) позволяет серверным администраторам добавлять новые пункты в меню администратора. Оно было разработано, чтобы позволить плагинам добавлять свои возможности в меню, без внесения изменений в исходный код, т.к. большинство людей не обладают необходимыми знаниями. Для более подробной информации смотрите Admin Menu (SourceMod Scripting).

Настраивается кастом меню через конфиг файл (расположен по пути: sourcemod/configs/adminmenu_custom.txt) и именно этот файл определяет, какие пункты или категории будут добавлены к стандартному меню при запуске сервера.


Ниже перечислены все парамерты, которые могут быть указаны при настройке вашего меню. Многие из них опциональны и имеют значение по умолчанию, если их не указали. Для более подробной информации смотрите Пример и/или приложение(я) Файлы с примерами.

  • cmd — команда на выполнение (#1,#2 и так далее — лимита на число параметров нет) Используйте @номер чтобы параметр не был взят в «кавычки»
  • admin — требуемый уровень администратора для доступа к этой команде — смотрите Уровни администраторов для более подробной информации
  • execute — ‘server’ или ‘player’ — кто является «выполнителем» команды — сервер или тот, кто использует эту команду. По умолчанию ‘player’
  • 1 — Информация о параметре 1 (#1) — их должно быть ровно столько, сколько параметров в cmd
    • type — по умолчанию ‘list’, если не было указан.
      • ‘groupplayer’ — Лист Групп + подключенные игроки
      • ‘group’ — Лист Групп
      • ‘player’ — Лист игроков
      • ‘list’ — Настраеваемый список опций
      • ‘mapcycle’ — Автоматически заполняемое меню из карт вашего файла цикла карт
      • ‘onoff’ — «Вкл» или «Выкл», отсылает 1/0 (удобно для работы с консольными переменными (квары, ConVars, cvars), и им подобным)
    • path — Требуется только при type = mapcycle. Путь (включая имя файла и расширение) к файлу, содержащему список карт (с форматом записи как у mapcycle.txt) — по умолчанию значение ‘mapcycle.txt’
    • method — ‘name’ (имена игроков), ‘steamid’ (стим айди), ‘userid’ (юзерид), ‘userid2’ (не содержит ‘#’), ‘clientid’ (айди клиента), ‘ip’ (айпи) — требуется только для groupplayer/player типов — по умолчанию name
    • title — Заглавие меню, которое будет отображаться для выбора параметров (опционально (не обязательно))
    • 1-x — Лист параметров — требуется только для типа ‘list’
    • 1.-x. — Текст, который будет показан для параметра — требуется только для типа ‘list’ (опционально, если не указать, то будет написано то, что указано в соответствующем листе параметров)
    • 1* — x* — Требуемый уровень доступа администратора, чтобы увидеть эту опцию (тоже самое, что и поле ‘admin’)


Внимание! Если вы хотите использовать русские буквы в меню, то кодировка файла должна быть UTF-8 (без BOOM), иначе вместо букв вы увидите знаки вопроса!

"Commands" { 	"Fun Commands" 	{ 		"Set Player Speed" 		{ 			"cmd"			"sm_speed #1 @2" 			"admin"			"sm_kick" 			"execute"		"player" 			"1" 			{ 				"type" 		"groupplayer" 				"method"	"name" 				"title"		"Player/Team to Edit"   			} 			"2" 			{ 				"type" 		"list" 				"title"		"Speed Multiplier" 				"1"		"1.0" 				"1."		"Normal" 				"2"		"0.8" 				"2."		"80%" 				"3"		"0.5" 				"3."		"Half" 				"4"		"1.5" 				"4."		"50% Boost" 				"5"		"2.0" 				"5."		"Double" 				"5*"		"sm_ban"  				//Double увидят лишь те администраторы, которые имеют доступ к команде "sm_ban" 			}   		} 	} }

Если использовать пример выше для вашего adminmenu_custom.txt, то при запуске сервера в меню администратора будет добавлена новая категория под названием ‘Fun Commands’.

  • Эта категория будет содержать пункт под названием: «Set Player Speed».
  • Выбрав его, вы увидите другое меню, с названием: «Player/Team to Edit», содержащий названия команд и имена игроков.
  • Выбрав один из вариантов, будет создано второе меню, с названием «Speed Multiplier».
  • С выбором опций: «Normal», «80%», и так далее.
  • Если игрок выберет опцию «Double», то команда на выполнение будет выглядеть так: ‘sm_speed «@CT» 2.0’ (команда отсылается на выполнение через FakeClientCommand)

Заметка: Вы можете использовать как управляющий символ. Таким образом, » позволит вам добавить кавычку в вашу строку.

Уровни администраторов

Все ‘type’ ‘admin’ теперь требуют строчную команду. Эта команда может уже существовать (например, sm_ban) или быть полностью придуманной (например, onlycrabscanusethis).

Если команда существует, то эта опция (или лист опций) будет требовать уровень доступа, равный уровню доступа к этой команде (включая любые переопределения (оверрайды, overrides), которые вы сделали).
Например, если вы используете sm_ban как уровень администратора для подменю, то таким образом каждый, кто имеет доступ к sm_ban, будет так же иметь доступ и к этому подменю (по умолчанию доступ к этой команде является флаг бана). Однако если вы переопределили sm_ban для одной из групп («override» «allow» — в файле admin_groups.cfg), то эта группа так же получит доступ.

Если команда не существует, то вам нужно будет добавить переопределение для этой команды, как это делается для простых команд. Это делается в файле admin_overrides.cfg (чтобы назначить флаг доступа к этой команде, и/или в файле admin_groups.cfg (чтобы дать доступ к команде определенной группе или же забрать, несмотря на то, что они имеют флаг доступа)

Если уровень доступа не был назначен, то тогда уровнем доступа будет назначен первый аргумент «cmd». Например, для команды

"cmd"		"sm_ban #1 #2"

уровнем доступа будет уровень доступа sm_ban, включая все его переопределения.

Для более подробной информации смотрите Переопределение уровней доступа

Group Подменю

Типы ‘group’ и ‘groupplayer’ автоматически добавляют заранее настроенные опции в меню. Эти опции настраиваются в файле sourcemod/configs/adminmenu_grouping.txt

Обычно они используются, чтобы добавить такие команды как ‘@all’, ‘@t’ и другие, для ваших меню.


Если вы хотите добавить пункт в уже существующую SourceMod категорию, вы должны будете определить его внутреннее имя в «commands» группе. Три категории, предоставленные SourceMod’ом:

  • PlayerCommands (Управление игроками)
  • ServerCommands (Управление сервером)
  • VotingCommands (Управление голосованиями)


Категории и пункты, добавленные с использованием динамических меню, могут быть отсортированы, как обычные пункты. Для подробной информации смотрите Admin Menu Configuration

Для того, чтобы можно было сортировать добавленный пункт, вы должны дать вашей команде уникальное имя в вашем конфигурационном файле. Для приведенного примера:

"item"	"Set Player Speed"

Дополнительные возможности

Пример использования полного потенциала меню: даем администраторам доступ к квару, не давая им флага доступа ‘sm_cvars’

Добавьте квар, к которому вы хотите дать доступ, и установите ‘execute’ ‘server’

"cmd"		"mp_friendlyfire #1" "execute"	"server" "admin"		"sm_kick"

Таким образом, команда будет выполнена через rcon, несмотря на обычную систему уровней доступа, и проверит доступ только к флагу, указанному в поле ‘admin’. Это так же работает для любых других команд, включая sm_rcon.


Usually, plugin and theme authors need to provide access to a settings (options) screen so users can customize how the plugin or theme is used. The best way to present the user with such a screen is to create an administration menu item that allows the user to access that settings screen from all the Administration Screens. This article explains how plugin authors can add administration menus and screens. Note: the following information assumes a knowledge of the basics of Writing a Plugin and using the Plugin API of Actions and Filters.

Function Reference

General Functions

Menu Pages

  • add_menu_page()
  • add_object_page()
  • add_utility_page()
  • remove_menu_page()

SubMenu Pages

  • add_submenu_page()
  • remove_submenu_page()
WordPress Administration Menus
  • add_dashboard_page()
  • add_posts_page()
  • add_media_page()
  • add_pages_page()
  • add_comments_page()
  • add_theme_page()
  • add_plugins_page()
  • add_users_page()
  • add_management_page()
  • add_options_page()

Every Plot Needs a Hook

To add an administration menu, you must do three things:

  1. Create a function that contains the menu-building code
  2. Register the above function using the admin_menu action hook. (If you are adding an admin menu for the Network, use network_admin_menu instead).
  3. Create the HTML output for the page (screen) displayed when the menu item is clicked

It is that second step that is often overlooked by new developers. You cannot simply call the menu code described; you must put it inside a function, and then register the function.

Here is a very simple example of the three steps just described. This plugin will add a sub-level menu item under the Settings top-level menu in Administration Screens, and when selected, that menu item will cause a very basic screen to display. Note: this code should be added to a main plugin PHP file or a separate PHP include file.

 <?php /** Step 2 (from text above). */ add_action( 'admin_menu', 'my_plugin_menu' );  /** Step 1. */ function my_plugin_menu() { 	add_options_page( 'My Plugin Options', 'My Plugin', 'manage_options', 'my-unique-identifier', 'my_plugin_options' ); }  /** Step 3. */ function my_plugin_options() { 	if ( !current_user_can( 'manage_options' ) ) { 		wp_die( __( 'You do not have sufficient permissions to access this page.' ) ); 	} 	echo '<div class="wrap">'; 	echo '<p>Here is where the form would go if I actually had options.</p>'; 	echo '</div>'; } ?> 

In this example, the function my_plugin_menu() adds a new item to the Settings administration menu via the add_options_page() function. Note: more complicated multiple menu items can be added, but that will be described later. Notice the add_action() call in Step 2 that registers the my_plugin_menu() function under the admin_menu hook. Without that add_action() call, a PHP error for undefined function will be thrown when attempting to activate the plugin. Finally, the add_options_page() call refers to the my_plugin_options() function which contains the actual page to be displayed (and PHP code to be processed) when someone clicks the menu item.

These processes are described in more detail in the sections below. Remember to enclose the creation of the menu and the page in functions, and use the admin_menu hook to get the whole process started at the right time!

Determining Location for New Menus

Before creating a new menu, first decide if the menu should be a top-level menu, or a sub-level menu item. A top-level menu displays as new section in the administration menus and contains sub-level menu items. A sub-level menu means the menu item is a member of an existing menu.

It is rare that a plugin would require the creation of a top-level menu. If the plugin introduces an entirely new concept or feature to WordPress, and needs many screens to do it, then that plugin may warrant a new top-level menu. Adding a top-level menu should only be considered if you really need multiple, related screens to make WordPress do something it was not originally designed to accomplish. Examples of new top-level menus might include job management or conference management. Please note with the native post type registration, WordPress automatically creates top-level menus to manage those features.

If the creation of a top-level menu is not necessary, decide under what top-level menu to place your sub-level menu item. As a point of reference, most plugins add sub-level menu items underneath existing WordPress top-level menus. For example, the Backup plugin adds a sub-level menu option to the Tools top-level menu. Please note with the taxonomy registration, WordPress automatically creates sub-level menus under the applicable top-level menu to manage those features.

Use this guide of the WordPress top-level menus to determine the correct location for your sub-level menu item:

Information central for your site and include the Updates option for updating WordPress core, plugins, and themes.
Displays tools for writing posts (time oriented content).
Uploading and managing your pictures, videos, and audio.
Displays tools for writing your static content called pages.
Controlling and regulation reader to responses to posts.
Displays controls for manipulation of theme/style files, sidebars, etc.
Displays controls dealing with plugin management, not configuration options for a plugin itself.
Displays controls for user management.
Manage the export, import, and even backup of blog data.
Displays plugin options that only administrators should view (also see Creating Settings Pages).
Network Admin 
Displays plugin options that are set on the Network. Instead of «admin_menu», you should use «network_admin_menu» (see also Create A Network)

Admin Menu Functions

Now that you have decided where to add your top-level or sub-level menu, the next step is to tell WordPress about your new pages. All of this will take place in a function registered to the 'admin_menu' action. A working example is presented at the end of this section.

Top-Level Menus

If you have decided your plugin requires a brand-new top-level menu, the first thing you’ll need to do is to create one with the add_menu_page function. Note: skip to Sub-Level Menus if you don’t need a top-level menu.

<?php add_menu_page$page_title$menu_title$capability$menu_slug$function$icon_url$position ); ?>

Parameter values:

The text to be displayed in the title tags of the page when the menu is selected.
The on-screen name text for the menu.
The capability required for this menu to be displayed to the user. When using the Settings API to handle your form, you should use ‘manage_options’ here as the user won’t be able to save options without it. User levels are deprecated and should not be used here!
The slug name to refer to this menu by (should be unique for this menu). Prior to Version 3.0 this was called the file (or handle) parameter. If the function parameter is omitted, the menu_slug should be the PHP file that handles the display of the menu page content.
The function that displays the page content for the menu page.
Technically, the function parameter is optional, but if it is not supplied, then WordPress will basically assume that including the PHP file will generate the administration screen, without calling a function. The page-generating code can be written in a function within the main plugin file.
In the event that the function parameter is specified, it is possible to use any string for the menu_slug parameter. This allows usage of pages such as ?page=my_super_plugin_page instead of ?page=my-super-plugin/admin-options.php.
The function must be referenced in one of two ways:

  1. if the function is a member of a class within the plugin it should be referenced as array( $this, 'function_name' )
  2. in all other cases, using the function name itself is sufficient
The url to the icon to be used for this menu. This parameter is optional.
The position in the menu order this menu should appear. By default, if this parameter is omitted, the menu will appear at the bottom of the menu structure. To see the current menu positions, use print_r($GLOBALS['menu']) after the menu has loaded.

Sub-Level Menus

Once your top-level menu is defined, or you have chosen to use an existing WordPress top-level menu, you are ready to define one or more sub-level menu items using the add_submenu_page function. Make sure to add the sub-level menu items in the order you want them displayed.

Using add_submenu_page

<?php add_submenu_page$parent_slug$page_title$menu_title$capability$menu_slug$function); ?>

Parameter values:

The slug name for the parent menu, or the file name of a standard WordPress admin file that supplies the top-level menu in which you want to insert your submenu, or your plugin file if this submenu is going into a custom top-level menu.

  1. For Dashboard: add_submenu_page(‘index.php’,…)
  2. For Posts: add_submenu_page(‘edit.php’,…)
  3. For Media: add_submenu_page(‘upload.php’,…)
  4. For Pages: add_submenu_page(‘edit.php?post_type=page’,…)
  5. For Comments: add_submenu_page(‘edit-comments.php’,…)
  6. For Custom Post Types: add_submenu_page(‘edit.php?post_type=your_post_type’,…)
  7. For Appearance: add_submenu_page(‘themes.php’,…)
  8. For Plugins: add_submenu_page(‘plugins.php’,…)
  9. For Users: add_submenu_page(‘users.php’,…)
  10. For Tools: add_submenu_page(‘tools.php’,…)
  11. For Settings: add_submenu_page(‘options-general.php’,…)
Text that will go into the HTML page title for the page when the submenu is active.
The text to be displayed in the title tags of the page when the menu is selected.
The capability required for this menu to be displayed to the user. User levels are deprecated and should not be used here!
For existing WordPress menus, the PHP file that handles the display of the menu page content. For submenus of a custom top-level menu, a unique identifier for this sub-menu page.
In situations where a plugin is creating its own top-level menu, the first submenu will normally have the same link title as the top-level menu and hence the link will be duplicated. The duplicate link title can be avoided by calling the add_submenu_page function the first time with the parent_slug and menu_slug parameters being given the same value.
The function that displays the page content for the menu page.
Technically, as in the add_menu_page function, the function parameter is optional, but if it is not supplied, then WordPress will basically assume that including the PHP file will generate the administration screen, without calling a function. Most plugin authors choose to put the page-generating code in a function within their main plugin file.
In the event that the function parameter is specified, It’s possible to use any string for the menu_slug parameter. This allows usage of pages such as ?page=my_super_plugin_page instead of ?page=my-super-plugin/admin-options.php.
See the Top-Level Menus for notes about how to reference class members as function parameters.

Here’s a quick example illustrating how to insert a top-level menu page and a sub-menu page, where the title on the sub-menu page is different from the top-level page. In this example, ‘my_magic_function’ is the name of the function that displays the first sub-menu page:

('Page title''Top-level menu title''manage_options''my-top-level-handle''my_magic_function');
add_submenu_page'my-top-level-handle''Page title''Sub-menu title''manage_options''my-submenu-handle''my_magic_function');

Here’s an example of adding an option page under a custom post type menu block (see also here):

<?php add_submenu_page('edit.php?post_type=wiki''Options''Options''manage_options''wiki-options', array(&$this'options_page') ); ?>

Using Wrapper Functions

Since most sub-level menus belong under the Settings, Tools, or Appearance menus, WordPress supplies wrapper functions that make adding a sub-level menu items to those top-level menus easier. Note that the function names may not match the names seen in the Administration Screens as they have changed over time:

Dashboard <?php add_dashboard_page$page_title$menu_title$capability$menu_slug$function); ?>

Posts <?php add_posts_page$page_title$menu_title$capability$menu_slug$function); ?>

Media <?php add_media_page$page_title$menu_title$capability$menu_slug$function); ?>

Pages <?php add_pages_page$page_title$menu_title$capability$menu_slug$function); ?>

Comments <?php add_comments_page$page_title$menu_title$capability$menu_slug$function); ?>

Appearance <?php add_theme_page$page_title$menu_title$capability$menu_slug$function); ?>

Plugins <?php add_plugins_page$page_title$menu_title$capability$menu_slug$function); ?>

Users <?php add_users_page$page_title$menu_title$capability$menu_slug$function); ?>

Tools <?php add_management_page$page_title$menu_title$capability$menu_slug$function); ?>

Settings <?php add_options_page$page_title$menu_title$capability$menu_slug$function); ?>

Also see Creating Options Pages for more on this.

Inserting the Pages

Here is an example of a WordPress plugin that inserts new menus into various places:

 <?php /* Plugin Name: Menu Test Plugin URI: Description: Menu Test Author: Codex authors Author URI: */  // Hook for adding admin menus add_action('admin_menu', 'mt_add_pages');  // action function for above hook function mt_add_pages() {  // Add a new submenu under Settings:  add_options_page(__('Test Settings','menu-test'), __('Test Settings','menu-test'), 'manage_options', 'testsettings', 'mt_settings_page');   // Add a new submenu under Tools:  add_management_page( __('Test Tools','menu-test'), __('Test Tools','menu-test'), 'manage_options', 'testtools', 'mt_tools_page');   // Add a new top-level menu (ill-advised):  add_menu_page(__('Test Toplevel','menu-test'), __('Test Toplevel','menu-test'), 'manage_options', 'mt-top-level-handle', 'mt_toplevel_page' );   // Add a submenu to the custom top-level menu:  add_submenu_page('mt-top-level-handle', __('Test Sublevel','menu-test'), __('Test Sublevel','menu-test'), 'manage_options', 'sub-page', 'mt_sublevel_page');   // Add a second submenu to the custom top-level menu:  add_submenu_page('mt-top-level-handle', __('Test Sublevel 2','menu-test'), __('Test Sublevel 2','menu-test'), 'manage_options', 'sub-page2', 'mt_sublevel_page2'); }  // mt_settings_page() displays the page content for the Test Settings submenu function mt_settings_page() {  echo "<h2>" . __( 'Test Settings', 'menu-test' ) . "</h2>"; }  // mt_tools_page() displays the page content for the Test Tools submenu function mt_tools_page() {  echo "<h2>" . __( 'Test Tools', 'menu-test' ) . "</h2>"; }  // mt_toplevel_page() displays the page content for the custom Test Toplevel menu function mt_toplevel_page() {  echo "<h2>" . __( 'Test Toplevel', 'menu-test' ) . "</h2>"; }  // mt_sublevel_page() displays the page content for the first submenu // of the custom Test Toplevel menu function mt_sublevel_page() {  echo "<h2>" . __( 'Test Sublevel', 'menu-test' ) . "</h2>"; }  // mt_sublevel_page2() displays the page content for the second submenu // of the custom Test Toplevel menu function mt_sublevel_page2() {  echo "<h2>" . __( 'Test Sublevel2', 'menu-test' ) . "</h2>"; }  ?> 

Sample Menu Page

Note: See the Settings API for information on creating settings pages.

The example above contains several dummy functions, such as mt_settings_page, as placeholders for actual page content. We need to turn them into real menu pages. So, let’s assume that our plugin has an option called mt_favorite_color, and that we want to allow the site owner to type in his/her favorite color via a Settings page. The mt_options_page function will need to put a data entry form on the screen to enable this, and also process the entered data. Here is a function that does this:

  // mt_settings_page() displays the page content for the Test Settings submenu function mt_settings_page() {   //must check that the user has the required capability   if (!current_user_can('manage_options'))  {  wp_die( __('You do not have sufficient permissions to access this page.') );  }   // variables for the field and option names   $opt_name = 'mt_favorite_color';  $hidden_field_name = 'mt_submit_hidden';  $data_field_name = 'mt_favorite_color';   // Read in existing option value from database  $opt_val = get_option( $opt_name );   // See if the user has posted us some information  // If they did, this hidden field will be set to 'Y'  if( isset($_POST[ $hidden_field_name ]) && $_POST[ $hidden_field_name ] == 'Y' ) {  // Read their posted value  $opt_val = $_POST[ $data_field_name ];   // Save the posted value in the database  update_option( $opt_name, $opt_val );   // Put a "settings saved" message on the screen  ?> <div class="updated"><p><strong><?php _e('settings saved.', 'menu-test' ); ?></strong></p></div> <?php   }   // Now display the settings editing screen   echo '<div class="wrap">';   // header   echo "<h2>" . __( 'Menu Test Plugin Settings', 'menu-test' ) . "</h2>";   // settings form     ?>  <form name="form1" method="post" action=""> <input type="hidden" name="<?php echo $hidden_field_name; ?>" value="Y">  <p><?php _e("Favorite Color:", 'menu-test' ); ?>  <input type="text" name="<?php echo $data_field_name; ?>" value="<?php echo $opt_val; ?>" size="20"> </p><hr />  <p class="submit"> <input type="submit" name="Submit" class="button-primary" value="<?php esc_attr_e('Save Changes') ?>" /> </p>  </form> </div>  <?php   } 

A few notes:

  • The WordPress functions such as add_menu_page and add_submenu_page take a capability which will be used to determine whether the top-level or sub-level menu is displayed.
  • The function which is hooked in to handle the output of the page must check that the user has the required capability as well.
  • The WordPress administration functions take care of validating the user login, so you don’t have to worry about it in your function.
  • The function example above has been internationalized — see the Internationalization section of Writing a Plugin for more information.
  • The function processes any entered data before putting the data entry form on the screen, so that the new values will be shown in the form (rather than the values from the database).
  • You don’t have to worry about this working the first time, because the WordPress update_option function will automatically add an option to the database if it doesn’t already exist.
  • These admin-menu-adding procedures are parsed every single time you navigate to a page in Admin. So if you are writing a plugin which has no options page, but add one later, you can just add it using the instructions above and re-upload, and tweak until you’re happy with it. In other words, menus are not «permanently added» or put into a database upon activating a plugin. They’re parsed on the fly, so you can add or subtract menu items at will, re-upload, and the change will be reflected right away.

Page Hook Suffix

Every function that adds a new administration menu (add_menu_page(), add_submenu_page() and its specialized versions such as add_options_page()) returns a special value called Page Hook Suffix. It can be used later as a hook to which an action called only on that particular page can be registered.

One such action hook is load-{page_hook}, where {page_hook} is the value returned by one of these add_*_page() functions. This hook is called when the particular page is loaded. In the example below, it is used to display the «Plugin is not configured» notice on all admin pages except for plugin’s options page:

 <?php add_action('admin_menu', 'my_plugin_menu');  // Here you can check if plugin is configured (e.g. check if some option is set). If not, add new hook.  // In this example hook is always added. add_action( 'admin_notices', 'my_plugin_admin_notices' );  function my_plugin_menu() { 	// Add the new admin menu and page and save the returned hook suffix 	$hook_suffix = add_options_page('My Plugin Options', 'My Plugin', 'manage_options', 'my-unique-identifier', 'my_plugin_options'); 	// Use the hook suffix to compose the hook and register an action executed when plugin's options page is loaded 	add_action( 'load-' . $hook_suffix , 'my_load_function' ); }  function my_load_function() { 	// Current admin page is the options page for our plugin, so do not display the notice 	// (remove the action responsible for this) 	remove_action( 'admin_notices', 'my_plugin_admin_notices' ); }  function my_plugin_admin_notices() { 	echo "<div id='notice' class='updated fade'><p>My Plugin is not configured yet. Please do it now.</p></div>n"; }  function my_plugin_options() { 	if (!current_user_can('manage_options')) { 		wp_die( __('You do not have sufficient permissions to access this page.') ); 	} 	echo '<div class="wrap">'; 	echo '<p>Here is where the form would go if I actually had options.</p>'; 	echo '</div>'; } ?>

You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.