Thời gian đọc: 6 phút
Để lấy mảng dữ liệu các mục menu trong WordPress, bạn có thể sử dụng hàm wp_get_nav_menu_items()
. Hàm này sẽ trả về một mảng các đối tượng mục menu dựa trên ID hoặc tên của menu.
Dưới đây là các bước chi tiết để lấy mảng dữ liệu các mục menu trong WordPress:
Trước khi bạn có thể lấy các mục menu, bạn cần biết ID hoặc tên của menu mà bạn muốn lấy. Bạn có thể tìm thấy thông tin này trong phần quản lý Giao diện > Menu của WordPress Dashboard.
wp_get_nav_menu_items()
Sau khi biết ID hoặc tên của menu, bạn có thể sử dụng hàm wp_get_nav_menu_items()
để lấy các mục menu.
Cú pháp:
wp_get_nav_menu_items( $menu, $args );
$menu
: ID, slug, hoặc đối tượng menu để lấy các mục menu. Đây là tham số bắt buộc.
$args
: Một mảng các tham số bổ sung. Đây là tham số tùy chọn.
Dưới đây là một ví dụ cơ bản để lấy các mục menu bằng ID và in ra danh sách các mục menu:
// Lấy các mục menu bằng ID của menu (ví dụ: ID là 2)
$menu_id = 2;
$menu_items = wp_get_nav_menu_items($menu_id);
// Kiểm tra nếu menu tồn tại và có các mục
if (!empty($menu_items)) {
echo '<ul>';
foreach ($menu_items as $menu_item) {
echo '<li>';
echo '<a href="' . $menu_item->url . '">' . $menu_item->title . '</a>';
echo '</li>';
}
echo '</ul>';
} else {
echo 'Menu không tồn tại hoặc không có mục nào.';
}
Nếu bạn muốn sử dụng tên của menu thay vì ID, bạn có thể làm như sau:
// Lấy các mục menu bằng tên của menu
$menu_name = 'primary-menu'; // Tên của menu, thay bằng tên menu của bạn
$menu_items = wp_get_nav_menu_items($menu_name);
// Kiểm tra nếu menu tồn tại và có các mục
if (!empty($menu_items)) {
echo '<ul>';
foreach ($menu_items as $menu_item) {
echo '<li>';
echo '<a href="' . $menu_item->url . '">' . $menu_item->title . '</a>';
echo '</li>';
}
echo '</ul>';
} else {
echo 'Menu không tồn tại hoặc không có mục nào.';
}
Đối tượng mục menu được trả về bởi wp_get_nav_menu_items()
sẽ chứa các thuộc tính như:
post_type
, taxonomy
, custom
).page
, category
).Bạn có thể sử dụng các thuộc tính này để tùy chỉnh hiển thị menu của mình theo nhu cầu.
Để lấy mảng 2 chiều hoặc đa chiều của các mục menu trong WordPress, bạn có thể sử dụng hàm wp_get_nav_menu_items()
để lấy tất cả các mục menu, sau đó sắp xếp chúng thành một cấu trúc mảng 2 chiều hoặc đa chiều theo mong muốn.
Mảng 2 chiều thường bao gồm các mục menu cấp cao nhất và các mục con trực tiếp của chúng. Để xây dựng mảng 2 chiều, bạn cần sắp xếp các mục menu dựa trên thuộc tính menu_item_parent
.
Dưới đây là ví dụ mã PHP để tạo mảng 2 chiều:
// Lấy các mục menu bằng ID của menu
$menu_id = 2; // Thay bằng ID menu của bạn
$menu_items = wp_get_nav_menu_items($menu_id);
$menu_array = array();
// Sắp xếp các mục menu thành mảng 2 chiều
if (!empty($menu_items)) {
foreach ($menu_items as $menu_item) {
if ($menu_item->menu_item_parent == 0) {
// Mục menu cấp cao nhất
$menu_array[$menu_item->ID] = array(
'title' => $menu_item->title,
'url' => $menu_item->url,
'children' => array()
);
} else {
// Mục menu con
$menu_array[$menu_item->menu_item_parent]['children'][$menu_item->ID] = array(
'title' => $menu_item->title,
'url' => $menu_item->url
);
}
}
}
// In ra mảng 2 chiều
echo '<pre>';
print_r($menu_array);
echo '</pre>';
Để tạo mảng đa chiều, bạn cần xây dựng cấu trúc mảng đệ quy để bao gồm tất cả các cấp mục menu và các mục con của chúng.
Dưới đây là ví dụ mã PHP để tạo mảng đa chiều:
// Lấy các mục menu bằng ID của menu
$menu_id = 2; // Thay bằng ID menu của bạn
$menu_items = wp_get_nav_menu_items($menu_id);
function build_tree(array $elements, $parentId = 0) {
$branch = array();
foreach ($elements as $element) {
if ($element->menu_item_parent == $parentId) {
$children = build_tree($elements, $element->ID);
if ($children) {
$element->children = $children;
}
$branch[$element->ID] = array(
'title' => $element->title,
'url' => $element->url,
'children' => isset($element->children) ? $element->children : array()
);
}
}
return $branch;
}
// Xây dựng mảng đa chiều
$menu_tree = build_tree($menu_items);
// In ra mảng đa chiều
echo '<pre>';
print_r($menu_tree);
echo '</pre>';
wp_get_nav_menu_items()
để lấy tất cả các mục menu từ ID menu cụ thể.build_tree()
: Đây là hàm đệ quy giúp xây dựng cấu trúc cây cho các mục menu:
$elements
) và parentId
, mặc định là 0
(các mục menu cấp cao nhất).menu_item_parent
có bằng với parentId
hiện tại không.branch
) và hàm được gọi lại đệ quy để tìm các mục con của nó.Với hai đoạn mã trên, bạn có thể dễ dàng lấy mảng 2 chiều hoặc đa chiều của các mục menu trong WordPress, tùy thuộc vào cấu trúc dữ liệu mà bạn mong muốn.