Nhảy tới nội dung
Phiên bản: 7.2.0

Menu

Thêm vị trí menu

img.png

Để thêm vị trí hiển thị menu bạn sử dung method addLocation, addLocation nhận vào 2 tham số

ParamsTypeDescriptionMặc định
$locationsstringid vị trí
$labelstringtên vị trí
ThemeMenu::addLocation($locations, $label)

Hiển thị menu theo vị trí

Hiển thị menu dựa theo vị trí đã đăng ký

ThemeMenu::render(['theme_location' => $locations, 'walker' => 'store_bootstrap_nav_menu'])

Lấy data menu theo vị trí

$locations có thể là vị trí bạn đăng ký bằng ThemeMenu::addLocation hoặc id menu

ThemeMenu::getData($locations)

Data nhận được có dạng

[
0 => [
"id" => 44, //id menu item
"name" => "Giới thiệu",
"slug" => "gioi-thieu",
"type" => "page",
"object_type" => "page",
"menu_id" => "1", //id menu
"parent_id" => 0,
"object_id" => 1,
"child" => [],
"data" => [] //Data mở rộng
],
1 => [
"id" => 58,
"name" => "Sản Phẩm",
"slug" => "san-pham",
"type" => "products_categories",
"object_type" => "products_categories",
"menu_id" => "1",
"parent_id" => 0,
"object_id" => 1,
"child" => [
0 => [
"id" => 58,
"name" => "Bếp chiên điện",
"slug" => "bep-chien-dien",
...
]
],
"data" => []
],
]

Thêm options vào menu item

img_1.png

Để thêm option vào menu item bạn sử dung method addItemOption, addItemOption nhận vào 2 tham số

ParamsTypeDescriptionMặc định
$modulestringloại menu item
$argsarraycác cấu hình

Các loại $module hỗ trợ

  • menu: tất cả menu item
  • post: menu item là bài viêt
  • post_categories: menu item là danh mục sản phẩm

params $args chưa thông tin field input cần thêm

ThemeMenu::addItemOption('menu', [
'field' => 'icon',
'label' => 'Icon',
'type' => 'font-icon',
'level' => 0
]);

key level quy định option được xuất hiện ở cấp mấy

Thêm Menu Type

img_4.png

Bạn sử dụng hook admin_menu_list_object để thêm một loại menu mới, ví dụ thêm loại menu thương hiệu

function adminMenuBrands($listObject) {
$listObject['brands'] = ['label' => trans('admin.brands'), 'type' => 'brands', 'data' => []];
$data = Brands::gets();
if(have_posts($data)) {
foreach ($data as $key => $datum) {
if(!isset($datum->id)) continue;
$listObject['brands']['data'][$datum->id] = (object)[]
'id' => $datum->id,
'name' => $datum->name
];
}
}
return $listObject;
}

add_filter('admin_menu_list_object', 'adminMenuBrands');