2012-03-14 34 views
6

All, Tôi đang sử dụng đoạn mã sau để có được tất cả các menu wordpress định nghĩa được tạo ra:Nhận đơn giá trị từ Wordpress

$menus = wp_get_nav_menus(); 

Tôi biết ID của menu Tôi muốn sử dụng. Dựa trên ID trình đơn, tôi muốn nhận các Trang nằm trong menu đó và Nhãn Điều hướng tương ứng dựa trên ID trình đơn đã chọn. Làm thế nào tôi có thể đi về làm điều đó?

Tôi thực sự phát hiện này:

Trong ví dụ rằng các tùy chọn $ [ 'menu_choice'] là Menu ID chọn nhưng những gì tôi thực sự muốn là để cho giá trị permalink. Tôi có thể lấy nó từ cái này không?

Cảm ơn bạn đã giúp đỡ trước!

+1

Bạn có biết có một trang web StackExchange dành riêng cho Wordpress không? http://wordpress.stackexchange.com –

+0

kiểm tra câu trả lời này http://stackoverflow.com/a/37959604/1153703 –

Trả lời

2

Để truy cập vào tiêu đề và url của từng hạng mục trong menu bằng cách sử dụng chức năng wp_get_nav_menu_items():

$menu_items = wp_get_nav_menu_items($options['menu_choice']); 
foreach ((array) $menu_items as $key => $menu_item) { 
    $title = $menu_item->title; 
    $url = $menu_item->url; 
} 
2

Bạn muốn hiển thị một menu cụ thể? tại sao không sử dụng chức năng đơn giản hơn, wp_nav_menu và chuyển đối số về ID trình đơn mong muốn của bạn? chỉ cần thay thế menu_id của bạn với $ menu_ID trong ví dụ tiếp theo:

<?php 
$menu_args = array('menu' => $menu_ID); 
wp_nav_menu($menu_args); 
?> 
+0

$ menu_ID = '195'; $ menu_args = array ('menu' => $ menu_ID); wp_nav_menu ($ menu_args); –

7

Đó là chính xác những gì bạn muốn.

$menu_name = 'menu-id'; //e.g. primary-menu; $options['menu_choice'] in your case 

if (($locations = get_nav_menu_locations()) && isset($locations[$menu_name])) { 
    $menu = wp_get_nav_menu_object($locations[$menu_name]); 
    $menu_items = wp_get_nav_menu_items($menu->term_id); 
} 

Hiện tại $ menu_items là đối tượng chứa tất cả dữ liệu cho tất cả các mục menu. Vì vậy, bạn có thể truy xuất dữ liệu cần thiết bằng cách sử dụng vòng lặp foreach.

foreach ($menu_items as $menu_item) { 
    $id = $menu_item->ID; 
    $title = $menu_item->title; 
    $url = $menu_item->url; 

    if ($parent_id = $menu_item->menu_item_parent) { 
     //the element has a parent with id $parent_id, so you can build a hierarchically menu tree 
    } 
    else { 
     //the element doesn't have a parent 
    } 
} 

Bạn có thể tìm thông tin thú vị hơn cho câu hỏi này, chẳng hạn như các tùy chọn orderby, trên trang web chính thức: http://codex.wordpress.org/Function_Reference/wp_get_nav_menu_items

1

Để có được bài ID sau đó bạn sẽ phải kéo nó sử dụng chức năng này:

$ id = get_post_meta ($ menu_item-> ID, '_menu_item_object_id', true);

Nếu không, id sẽ là bài đăng loại tùy chỉnh nav_menu mà wordpress sử dụng cho các menu. Cùng một goese cho $ url, bạn có thể gọi nó bằng cách sử dụng get_permalink ($ id);

0
<pre> 
$menu_ID = '195'; // 195 is a menu id this id you can see 
http://example.com/wp-admin/nav-menus.php?action=edit&menu=195 
$menu_args = array('menu' => $menu_ID); 
wp_nav_menu($menu_args); 
</pre> 
Các vấn đề liên quan