2014-12-26 2 views
0

내 기본 메뉴 항목을 가져오고 싶습니다. 몇 가지 코드를 시도했지만 모두 빈 페이지 만 반환합니다. 어떤 방법을 사용해야하는지 모르고 내 페이지에 다른 페이지가 필요하다는 것을 모릅니다.Wordpress에서 메뉴 항목을 얻는 방법?

그리고 wp 메소드 및 함수를 사용하지 않고 데이터베이스에서 메뉴 항목을 직접 가져올 수있는 방법이 있습니까? 나는 지금 wp의 테이블 구조를 이해할 수 없었다. 그래서 나는 테이블 간의 관계를 정확히 알지 못합니다.

감사합니다. 배열로

add_action('wp_nav_menu_menuname_items', 'user_nav_menu_items'); 
function user_nav_menu_items($items) { 
    /* do something with $items (string) */ 
    return $items; 
} 

가 원하는 경우 그냥 폭발하고 완료 후를 내파 :

+0

당신은 그들을 함수 내에서 배열이나 문자열로 가져 오거나 테마에 nav 메뉴 지원을 추가 할 수 있다는 것을 의미합니까? – Marventus

+0

어레이 또는 문자열 yes로 가져오고 싶습니다. – user2674354

답변

0

당신이 할 수있는 두 가지 경우 모두

add_action('wp_nav_menu_menuname_items', 'user_nav_menu_items'); 
function user_nav_menu_items($items) { 
    $items_r = explode("<li", $items); 
    /* do something with $items_r (array) */ 
    $items_new = implode("<li", $items_r); 
    return $items_new; 
} 

, 항목을 가져 오려고하는 메뉴의 이름에 대해 add_action 후크에 menuname을 대입해야합니다.

5

당신이 당신의 메뉴 위치 ID를 알고 있다면이 조각 사용할 수 있습니다 (일반적으로 "register_nav_menus"에 의해 functions.php에 선언) :

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

: 사본에서

// GET ALL MENU OBJECTS AT SPECIFIED LOCATION 
function yourprefix_get_menu_items($location_id){ 
    //$locations = get_registered_nav_menus(); 
    $menus = wp_get_nav_menus(); 
    $menu_locations = get_nav_menu_locations(); 

    if (isset($menu_locations[ $location_id ]) && $menu_locations[ $location_id ]!=0) { 
     foreach ($menus as $menu) { 
      if ($menu->term_id == $menu_locations[ $location_id ]) { 
       $menu_items = wp_get_nav_menu_items($menu); 
       break; 
      } 
     } 
     return $menu_items; 
    } 
} 

또는 더 짧은 버전을 그런 다음이 배열로 원하는 모든 작업을 수행하십시오.

$menu_items = yourprefix_get_menu_items('sidebar-menu'); // replace sidebar-menu by desired location 

if(isset($menu_items)){ 
     foreach ((array) $menu_items as $key => $menu_item) { 
      ...some code... 
     } 
} 

그리고 여기에 링크가 있습니다. t 당신은 MySQL의 요청에 의해 데이터베이스에서 직접 선택할 수있는 모든 nav_menu 데이터 : http://lasota.community.uaf.edu/2011/07/29/nav-menu-data-location-in-wordpress-3-2/

3
<?php 
$menu = 'menu-name/menu-id'; 
$args = array(
     'order'     => 'ASC', 
     'orderby'    => 'menu_order', 
     'post_type'    => 'nav_menu_item', 
     'post_status'   => 'publish', 
     'output'     => ARRAY_A, 
     'output_key'    => 'menu_order', 
     'nopaging'    => true, 
     'update_post_term_cache' => false); 
$items = wp_get_nav_menu_items($menu, $args); 
?> 
0

사용 get_registered_nav_menus() 기능

<?php 

$menus = get_registered_nav_menus(); 

foreach ($menus as $location => $description) { 

    echo $location . ': ' . $description . '<br />'; 
} 
1

당신은 당신이 당신의 메뉴가 나타납니다이

$menu_name = 'sidebar-menu'; //menu slug 
$locations = get_nav_menu_locations(); 
$menu = wp_get_nav_menu_object($locations[ $menu_name ]); 
$menuitems = wp_get_nav_menu_items($menu->term_id, array('order' => 'DESC')); 

echo "<pre>"; 
print_r($menuitems); 
echo "</pre>"; 

을 시도 할 수 있습니다 개체

ref 어 : http://wiki.workassis.com/wordpress-get-menu-array/

관련 문제