backend_extended_menu
Позволяет добавлять дополнительные разделы и ссылки в главное меню в новом интерфейсе (2.0).
Доступно начиная с версии 9.4.1.
Shop-Script
Входящие параметры (передаются по ссылке)
$params['menu'] array Массив с информацией о содержимом меню, в который можно добавить собственные элементы: пункты меню и секции для группировки пунктов меню. Ключи добавленных плагином секций и пунктов меню должны начинаться с идентификатора плагина, чтобы избежать конфликтов с другими плагинами.
Если вы хотите использовать раскрывающуюся секцию для группировки своих пунктов меню и предполагаете, что эта секция может использоваться также другими плагинами, то в идентификатор секции не нужно добавлять идентификатор плагина. Лучше сформировать идентификатор в общем виде, например,
Добавленные плагином подмассивы с пунктами и секциями меню должны содержать следующие элементы:
$params['menu'][id]['name'] string Локализованное название секции или пункта меню.
$params['menu'][id]['icon'] string HTML/SVG-код иконки для секции или пункта меню.
$params['menu'][id]['placement'] string Место размещения секции или пункта меню:
$params['menu'][id]['insert_before'] string Идентификатор стандартной секции меню, перед которой нужно разместить новый пункт или секцию. Если не указано, то применяется значение ключа
$params['menu'][id]['insert_after'] string Идентификатор стандартной секции меню, после которой нужно разместить новый пункт или секцию. Используется, только если не указано значение в ключе
$params['menu'][id]['url'] string URL ссылки. Должен быть пустым, если заполнен элемент
$params['menu'][id]['submenu'] array Список вложенных пунктов меню, если добавляемый элемент должен быть раскрывающейся секцией. Каждый элемент этого массива должен представлять собой подмассив со следующими ключами:
$params['menu'][id]['submenu'][]['name'] string Локализованный текст пункта меню.
$params['menu'][id]['submenu'][]['url'] string URL ссылки пункта меню.
Собственные пункты можно вставлять также в стандартные секции меню, добавляя новые элементы в массив
Если вы хотите использовать раскрывающуюся секцию для группировки своих пунктов меню и предполагаете, что эта секция может использоваться также другими плагинами, то в идентификатор секции не нужно добавлять идентификатор плагина. Лучше сформировать идентификатор в общем виде, например,
'integrations', 'marketplaces', 'social' и т. д. Перед попыткой создания такой секции нужно проверять, не была ли она уже создана другим плагином, создатель которого руководствуется такими же соображениями. Вариант реализации показан в примере кода ниже.Добавленные плагином подмассивы с пунктами и секциями меню должны содержать следующие элементы:
$params['menu'][id]['name'] string Локализованное название секции или пункта меню.
$params['menu'][id]['icon'] string HTML/SVG-код иконки для секции или пункта меню.
$params['menu'][id]['placement'] string Место размещения секции или пункта меню:
'body' (основная, верхняя часть меню), 'footer' (нижняя часть меню).$params['menu'][id]['insert_before'] string Идентификатор стандартной секции меню, перед которой нужно разместить новый пункт или секцию. Если не указано, то применяется значение ключа
insert_after либо, если оно не заполнено, новый пункт или секция добавляются в конце раздела меню, указанного в ключе placement.$params['menu'][id]['insert_after'] string Идентификатор стандартной секции меню, после которой нужно разместить новый пункт или секцию. Используется, только если не указано значение в ключе
'insert_before'. Если не указано, то новый пункт или секция добавляются в конце раздела меню, указанного в ключе placement.$params['menu'][id]['url'] string URL ссылки. Должен быть пустым, если заполнен элемент
'submenu' (в этом случае элемент меню является раскрывающимся разделом, а не ссылкой).$params['menu'][id]['submenu'] array Список вложенных пунктов меню, если добавляемый элемент должен быть раскрывающейся секцией. Каждый элемент этого массива должен представлять собой подмассив со следующими ключами:
$params['menu'][id]['submenu'][]['name'] string Локализованный текст пункта меню.
$params['menu'][id]['submenu'][]['url'] string URL ссылки пункта меню.
Собственные пункты можно вставлять также в стандартные секции меню, добавляя новые элементы в массив
'submenu' этих секций.
… код плагина …
Результат работы плагина
Shop-Script
Пример кода плагина
PHP
public function backendExtendedMenu(&$params)
{
$shop_backend_url = wa('shop')->getAppUrl(null, true);
// Case 1: Add a simple 1st level menu item.
$params['menu'][$this->id . '_item'] = [
'name' => _wp("My plugin’s menu item"),
'icon' => '<i class="fas fa-user"></i>',
'url' => "{$shop_backend_url}{$this->id}/",
];
// Case 2: Add 2nd level menu items grouped within a menu section.
// Case 2.1: Create plugin’s own menu section with menu items.
$params['menu'][$this->id . '_menu_section'] = [
'name' => _wp("My menu section"),
'icon' => '<i class="fas fa-user"></i>',
'url' => '',
'submenu' => [
[
'name' => _wp('Item 1'),
'url' => "{$shop_backend_url}{$this->id}/one/",
],
[
'name' => _wp('Item 2'),
'url' => "{$shop_backend_url}{$this->id}/two/",
],
],
];
// Case 2.2: Add new items to a common section, which may already have been added by other plugins.
// This way different plugins can add their menu items within one common section.
// Example of a menu section ID,
// which may be used to include menu items provided by different plugins
// related to various 3rd party integrations.
$menu_section_id = 'integrations';
// Step 1: Create the common menu section if it does not exist,
// i.e., has not yet been added by any other plugin.
// If a menu section with the specified ID already exists
// then this code will be ignored.
shopMainMenu::createSection(
$params['menu'],
$menu_section_id,
_wp("Integrations"),
[
// 'insert_before' adds the new section before the built-in "Storefront" section.
// 'insert_after' will add it after the specified one.
// Omitting this array item will simply add the new section at the end of the menu.
'insert_before' => 'storefront',
// 'body' means the main (top) menu part.
// 'footer' will add the menu section in the footer (bottom) part.
'placement' => 'body',
'icon' => '<i class="fas fa-arrows-alt"></i>',
]
);
// Step 2: Add new items to the common menu section.
shopMainMenu::createSubsection(
$params['menu'],
$menu_section_id,
_wp("Item 1"),
"{$shop_backend_url}{$this->id}/one/"
);
shopMainMenu::createSubsection(
$params['menu'],
$menu_section_id,
_wp("Item 2"),
"{$shop_backend_url}{$this->id}/two/"
);
}









