Để 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:

1. Tìm ID hoặc Tên của Menu

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.

2. Sử dụng Hàm 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:

$menu

4. Ví Dụ Sử Dụng Tên Menu

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:

wp_get_nav_menu_items()

2. Lấy Mảng Đa Chiều của Menu

Để 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:

wp_get_nav_menu_items()

Giải thích:

  1. Closure build_menu_tree: Hàm đệ quy này được định nghĩa bên trong get_menu_array và nhận đối số là danh sách các mục menu và parent_id.
    • Nó sẽ duyệt qua tất cả các mục trong menu và tìm những mục có menu_item_parent trùng với parent_id hiện tại.
    • Khi tìm thấy mục con, nó sẽ gọi lại chính mình để tiếp tục tìm các cấp con của mục đó (đệ quy).
  2. Sử dụng closure: Closure này sử dụng use (&$build_menu_tree) để đảm bảo có thể gọi chính nó đệ quy bên trong.
  3. Đơn giản hóa mã: Việc đưa toàn bộ logic vào cùng một hàm giúp mã gọn gàng hơn, không phải tách ra nhiều hàm nhỏ mà vẫn duy trì tính linh hoạt.

Kết quả sẽ là một mảng đa cấp chứa tất cả các mục menu và các mục con theo đúng cấu trúc phân cấp.